It all comes down to moisture (humidity) in the air and when you've got moisture, any temperature differences can lead to condensation. Cars are usually more humid on the inside due to sweat and breathing and this is especially apparent when you step into your car on one of those cold, crisp days as the air outside is not very humid at all then. This is why it's important to get rid of leaks, as the ingress of any water raises the cars interior mositure levels, and this is exactly the problem Cammy had with water trapped in the roof panel.
Warm air can hold more moisture then cold air. This is why when you just use your heater at max to get rid of the mist (especially on rainy days), it doesn't actually do much as your just giving your interior more capacity to hold moisture. Eventually it will work because you will physically heat up the windows themselves, thus reducing the temperature gradient between the air inside and the glass. So one way forward is A/C, which actually removes moisture from the air, or if you don't have A/C then set you heater to a LOWER temperature initially (or if it's a cold day, open a couple of windows by a crack).