We've built stacks so high we're afraid to jump off.
Nobody is really competing because nobody can build a complete product. So there's less pressure to fix the little irritations. Users are mostly satisfied, and problems get worse slowly enough that for the average user they don't notice right away how bad it's getting. So they stay because it's too hard or completely impossible to leave.
I think the bigger issue is the update model. In the past, if a new version sucked, people wouldn't upgrade. Now with subscriptions / continuous delivery, there's less ability to vote with one's wallet/feet