Because there are only 12 iPhone variants to test and upgrade but >100 Windows Phone 8 device variants. Sounds wrong I know, but the carrier customization (different radio firmware, carrier reporting apps and boot logos and installed apps) mean there a lot more variants of each phone type. Sure there may only be say 20 phones, but when each one has say 20 different firmware's, that's a lot of testing going on (e.g. 20x20 = 400 variants).
Now if Microsoft didn't permit so many carrier tweaks then it could be like an iPhone, but half the delays are due to the low volume not making carriers have a high importance to test along with the sheer number of variants that have to be signed off before the updates are pushed out.
At least unlike Android even 2 year old phones are all going to basically be updated to the latest firmware and gain the latest features.