The android OS ecosystem is totally broken on this level by the carriers who have every interest in making the higher cost phones more attractive by not updating the Android version on lower cost phones and not updating the version for existing customers. This issue is exactly why Linus' rant resonated with people and Engadget's position attracted so much fire. Nobody should be on an old version of Android. I've got my phone up to Android 4.0 after a stupid custom process from the manufacturer (which only ran on Windows) but I am fairly certain it's the last official update I will see for it even though it's more than capable of running newer versions. However, unless I can get a source more reliable than some php forum for updating it myself I am unlikely to update outside of this manufacturer version.
I really hope Google's Nexus intervention clears up this issue and finally turns the telcos into dumb pipes, but I am afraid it will only make the carriers offer an up-to-date Android on sale, which then won't be updated later. This is why the ecosystem for installing vanilla Android needs to be seriously improved and Google needs to step up to their responsibilities to provide automatic updating to carriers or a really properly supported community for mods.
You'd be better to attribute that to them being under-resourced to deliver software updates to all models of phones immediately. They focus on shipping to the high end phones first -- those customers have paid more for that support. Some low end devices just never get to the top of the priority list.
If you want upgrades, buy the best phone you can. If you are buying low end, you have to realise that it's essentially locked to the version that it ships with.
That's my take on it anyway. I don't have any inside information.