To start with, the only needed hardware for preemptive multitasking is a interrupt capable timer. Everything else can be done in software. Though, some memory management would be helpful. Beside custom solutions, that hardware was already ready off the shelf for 8-bit CPUs. Beside more generic solutions like TI's 74610 series, more advanced solutions like Motorola's 6829 were available.

> Notwithstanding the Amiga being 15 years ahead,

Lets skip that subjective part, ok :))

> why was it such a long time for preemptive multitasking to be supported by the mainstream consumer OS's?

Now hold the horses. I hope you agree that CP/M was a mainstream consumer OS, wouldn't you? DR already offered its preemptive multitasking brother [MP/M][1] in 1979. It would work with 'only' 32 KiB, but of course considerably better with several 64 KiB address spaces, one for each process.

This 'huge' memory requirement also marks the primary reason why usage was limited: the price for such a computer. MP/M was targeted at 'power users' with an urgent need to have multiple applications running in parallel. While RAM prices did drop, this **need for a use case** stayed.

MP/M-86 was available right with the IBM-PC and turned later on into Concurent-DOS. Still it was the missing **use case** that stopped a broader usage. Not least due to lacking software that would benefit from multitasking at all. Other more limited products like [DoubleDOS][2] and [Desq][3] had more success to the general public by offering the chance to hold more than one program in memory, handy to reduce load times. Otherwise there was little gain, as these programs worked virtually separated.

More problem-centric solutions like [Sidekick][4] did gain much popularity, as they offered at least some (workflow) integration. Apple, on the other hand, did focus from the beginning on a more user centric approach. Already the original Finder supported clipboard exchange and accessories in addition to a (single) main application. With System 5's [Multifinder][5] more than one application could be loaded. still, it took some time until this really got a foothold through better integration.

**Bottom Line: It's about the application, stupid.**

From a user's perspective there is no real difference between cooperative and preemptive multiprocessing. It's all about what can be done. No matter how we engineering orientated people value these concepts, Multiprogramming, Multitasking, Multiprocessing and all the other Multi* are only tools to enable the user to do his tasks and no real value in themselves. Separated address spaces, premptive multitasking ans so on only became standard when supporting hardware came for free, and at first only supported programmers in creating applications (or help handling their inability to do so), not offering any direct benefit to the user.

  [1]: https://en.wikipedia.org/wiki/MP/M
  [2]: https://en.wikipedia.org/wiki/DoubleDOS
  [3]: https://en.wikipedia.org/wiki/DESQview#Desq
  [4]: https://en.wikipedia.org/wiki/Borland_Sidekick
  [5]: https://en.wikipedia.org/wiki/MultiFinder