HTC doesn't earn any money at all upgrading people from 2.x/3.x to 4.0. They have to pay their devs, testers, IT staff, employees, etc so they are losing money when providing free upgrades. It seems more of they are extending generosity under their wing to look after some of their past phones.
They do earn money, if someone buys their Sense 4.0 phones.
That's why they 'make sense' (pun intended) when they don't want to upgrade everyone to 4.0. Making the customer satisfied with the latest update ASAP has never been top priority for them.
They might lose unsatisfied customers who want the latest updates, but I surmise these are actually a very small minority. XDA and other online android communities in reality, I am guessing the total members might make up less than 6-10% (maybe even 3-6% if I daresay) of the real-world android owners population. It would take some statistics to find the actual amount and we have to remove people who have duplicate phones.
It's all politics and marketing in the end.