Another possibility is that you got a clog at the heater core.
Thermostats are designed so if they get stuck, it's stuck open. Not saying it cannot get stuck close, just unlikely. Easy way to test is to pull the t-stat, put it into a pot of water, and let it boil, see if it opens up. I had a similiar issue with my Dakota, but it was a symptom of a problem rather than the source, but my heater core was getting clogged up, which kept me from getting much heat at all. If it hasn't ever been flushed, it's a good point to have it flushed now (and probably back-flushed as well).
A symptom of a blown head-gasket would be a sweet smell, and if it's that bad as you say, it would probably be very noticable (and I think white smoke coming from the exhaust).
Stuck thermostat (open), it will take the engine a longer time to warm up, possibly not heat up as well (the heater, and would definitely take longer to get heat out of the heater), but you wouldn't have over-heating problems, unless the fan isn't coming on during city-driving.
I doubt it's the electric fan, since it should not effect the heater for inside the car, but make sure it comes on anyway. I don't know if WRX's have a temp sensor to turn on the electric fan. My old Probe did, and the sensor broke off (sensor based where the t-stat was). Didn't notice the problem until I saw my coolant temp slowly rise while at stoplights, and then go back down while driving. Most of my driving was highway, so wasn't a big issue, but still got it fixed asap.
Air bubble in the cooling system is another possibility, but usually due to low coolant level (or a clogged system). That can cause your coolant sensor to spike to max for 5-10 seconds, then come back down (and probably affect your heater core as well), then few minutes later, it spikes again.
I *think* the only thing that will keep the heater core from blowing heat is lack of coolant cycling or cold coolant. Cold coolant would mean that your coolant isn't cycling (t-stat closed or clogged system). If your t-stat is closed, you're going to overheat fairly quickly.
I say get your system flushed, back-flushed (good mileage to do it at anyway), and replace the t-stat, and see if it does it anymore. That's only going to set you back $60-$75, and also verify your cooling fan is working as well.