One of the biggest problems the Android manufacturers face is getting the new versions of Android on all their phones and do it in a timely manner, too. I still don't think that manufacturers focus all that much on updating all their phones to new versions, because they have little incentive to do that after they've already sold them to consumers.
Even if Android is free, it still costs them to implement the software on their hardware, especially if they have multiple variations of the hardware, use different chips and so on. This job gets even harder when you take into account that most of them still don't use the stock version of Android, and they prefer to add their own customization to it. This not only adds to development time, but also to the testing time, because now they have to worry about bugs that wouldn't have been there if they just the stock version of Android.
Testing is a very big part of the process because they can't just sell products that cost hundreds of dollars to customers only for them to see later that their phones can't accomplish some very important tasks. This would give them very bad PR, which would later result in loss of sales.
This is why the testing is also done intensively by the carriers as well, because they want to make sure the phones work very well with their network, and they don't experience dropped calls, poor data transmission, or and unusual drop in battery life because of their network or because of the phone's software. Companies like Sony and Motorola actually blame the carriers for the biggest delays, and I'm inclined to believe them considering how late the Galaxy S received its updates in USA compared to Europe, even though it was pretty much the same hardware.
Android 4.0 might make it easier for manufacturers to update their code, but in the end without some way to bypass the carriers completely, it will still depend mainly on the carriers when the updates show up, that is if the manufacturers decide to make them in the first place.