Reasons 1, 2
Regarding too expensive to upgrade:
I'm pretty sure Microsoft made reduced price upgrades avaialable for Vista, 7 and 8 when they first debuted.
Regarding compatibility problems:
Most programs would run but they won't install because their installers made assumptions about where the user folder is or where configuration files should go. Further, some programs try to write to places outside the user folder and a normal user doesn't have access to do that unless they set their account as an admin and disable UAC. Disabling UAC in Windows 8 prohibits modern apps from running.
Perhaps I'm splitting hairs but the most aggregious compatibiilty problems generally come from device driver hassles. Vista changed the driver model and if the hardware vendor didn't provide new drivers for your device, you were SOL. There's no solution. This really bugged me because of all the backward, backward compatibility Microsoft builds into Windows, why wouldn't they foresee folks wanting to run a legacy driver? Why couldn't they have provided a sand-box to run these drivers and at least let folks continue to use their trusted scanners, printers and other peripherals that were fine but rendered useless for no other reason than the Vista/7/8 driver model cannot use their drivers? I had a relatively expensive SCSI scanner from years ago that I trashed because HP never released updated drivers for it. That ticked me off big time.