These terms are not used consistently, nor in a way consistent with the way people who talk about science interpret them. For example, the thing called the "standard model" is not really a model anymore (except for the Higgs sector), but an excellent theory, perhaps even a fact of nature, but it is still called the "standard model", not the "standard fact".
An open-ended program you can publish new fundamental papers about is always called a "theory". A "model" is something that was perfectly and precisely well defined in the original paper, like the Weinberg-Salam model. A "law" is a simple mathematical relation that comes either from experiment or theory. A "hypothesis" is a tentative guess, and turns into a theory when you can start writing papers about it. A "principle" is a hypothesis that you really believe in.
These terms are more publishing terms than philosophical terms, and don't give them too much respect.