Samsung gets it worse because the Nexus S had the EXACT same hardware and got ICS, the Galaxy S did not. There's no way around that one.
Microsoft isn't letting anyone upgrade to Windows Phone 8 because expecting the Windows NT kernel and apps to run well on a phone with a single core processor, 512MB of RAM, and a 2 year old GPU is ludicrous. You'd end up with a slower phone, and people would howl at Microsoft for an update providing a poor experience.
I'm sorry, but if you bought a Lumia 900 and you read forums like AnandTech, it should have been clear that there was a very good chance you weren't going to get Windows Phone 8. And you were never going to get any of the hardware features like HD displays, dual-core CPUs, significantly better GPUs, and NFC with your current hardware, which is one of the reasons while I liked the Lumia 900, I returned it.