While people were complaining about the Nexus One not getting updated for longer than 2 years, The Understatement blog tracked down every major and minor release of Android over the years and how the Android manufacturers handled it. And let me tell you, it's not pretty. Compared to updates the other phones got, the Nexus One will look like is in its own league.
So who's at fault here? Is it Google? You could certainly put some blame on them, too. They've made the bed they now sleep in. If they wouldn't have compromised so much to allow for the fastest growth possible, they might've been able to force a few more restrictions on the manufacturers, to ensure a good upgrade experience with most Android phones. So I definitely think Google should've done a lot more to convince/force the manufacturers to upgrade all their phones and on time.
Is it the carriers? It definitely is sometimes - like when Samsung Galaxy S got its Android 2.3 update all over Europe, but it wasn't available until months later in USA. Plus, the carriers forced Samsung to give them a slightly different version of the phone, too.
But I think everyone recognizes that the biggest blame will go to the manufacturers themselves. First of all, they don't have much incentive or motivation to upgrade all their phones, because they know they've already made the sale, so keeping upgrading them, will cut into their profits. Of course, they should've thought of this before they tried to price their phones too low, or before they made the deals with carriers to sell them for less. They absolutely need to take into consideration upgrade costs into the future for all phone models.
And second, they are all spreading themselves too thin. Both Samsung and HTC are releasing a new phone every month now, that is slightly better than the previous one, but different enough to slow down the development team and the team in charge of upgrades. This means they will only focus on some phones, and only for a while. It's a bad strategy not only because I believe this will end up commoditizing their hardware faster, but because it makes it a lot harder to support their own phones later, and they end up disappointing their customers in the process.
Not to mention that instead of at least leaving a gateway for customers to upgrade their phones with custom ROM's, they try to lock them down, like how Motorola is doing, and they make it much harder for customers to upgrade it that way, too. So which is it, Motorola? Are you going to provide the updates yourself then? Hopefully, this will change with Google buying them, and they'll start offering only stock Android phones from then on.
I'm also hoping that with Android 4.0, upgrading will be a lot easier for manufacturers, and we might see them faster and for more phones. But that's only for new phones that will arrive with Android 4.0, so it will take a while until this effect will be felt in the market.