The thing to remember is that companies like HTC are in business to sell new phones. That is what they do, that is how they pay the bills and make investors happy. They give enough support to a phone so as not to hurt sales, and that's it.
Cell phones move too quickly. By the time a new phone ships to market, it's replacement is already in beta testing phase. We have at best a 6 month product cycle, and they make their money by creating and selling NEW phones, not supporting old "outdated" ones. And because every manufacturer does this, it doesn't really hurt sales because it isn't like you can go somewhere else and get better treatment.
Gingerbread's code was released a year ago. The TBolt just got it a few weeks ago officially, about 2 weeks before ICS was released. Part of that is the fault of HTC, but the rest is on VZW. If they just took the new code from HTC and pushed it out, people could have had it months ago. But VZW has to load it all up with bloat, which takes time, has to be tested, fixed, etc... And even when they released it, it was still crap and had to be pulled back and took another month, etc...
Carriers need to just sell the phones as the manufacturers send them, and let the new code come from them. But because companies pay VZW millions of dollars to pre-load all they crappy bloat in there, they hold things up.