Anytime between matches if you have unlocked them.
I recall (but I have watched and read enough interviews that I unfortunately cannot say specifically where) that between matches Devs have commented, usually quite quickly and almost under their breath, that you don't change a character from heavy to light (for example) between matches but instead that you actually switch to another character (who happens to be another weight). [Note: I am hearing Ed Stern's voice in my head, so perhaps I think I heard this in one of his interviews.] Ahem, anyway. This suggests a level of permanence to your choice of weight which is greater than simply switching between weight classes between matches.
Another way to think about it: We are being given 10 character slots. Without weight being somewhat "permanent" for each character, there is really only a need for 4 or 5 character slots (one for each class).
Clearly I am guessing, and I admit it. However, is the above statement confirmed or another highly educated guess?
Edit: Additionally, it could be that the interviews I am remembering are, in fact, older ones and the feature has changed. So that is another variable to toss into the salad, as it were.
Edit #2: This is a quote from HORSE on another forum, but dates from 2009. Clearly old.
"Body types are NOT changeable during a match, but classes and weapon loadouts are. However, body types can be changed in between matches (at the beginning and end). I'm not sure if you would change the body of your existing character, or have to change to a different character with a different body type. If so, People will probably have at least 3 characters (one for each body type)."