In short..
I'd be thinking this through science.
As we all know, snow is rain and vice versa, except they have different solid states due to temperature changes.
Temperature changes can be associated to winds.
A quick Google for "what causes wind" gave me an answer from Answers.com:
"The pressure gradient force, which arises from the uneven heating of
earth's surface. Once it is in motion, the Coriolis force arises from
Earth's rotation to deflect it (right in the northern hemisphere, left
in the southern hemisphere)."
Aye, not the best source for scientific questions, but it gives the idea.
So, theoretically, you only need wind now. It could be random, or, might as well be somehow scripted to you environment which heats due to some events.
Take wind now, apply to your current position, and randomly or through a scripted way, make clouds out from it. The denser the cloud, the more the probability and density of rain. If temperature is low enough, rain becomes snow. Move the cloud around and make it "not so dense" with that wind.
As for the display, that's up to you, just cache the states of the falling particles, if rain -> use water drop texture
and if snow -> use snowflake texture
. Use the wind to make these particles move according to wind direction (yeah, you should store this one too, somewhere) to make it a little more realistic.
And with this you can expand upon everything. Like, if there is snow falling and the snowflakes fall near some kind of heat source, change particle texture to rain again.
Lots of possibilities actually, this is just a simple concept.
P.S. As for the hail, look what makes those, expand the concept for such environment.
Have fun, good luck.