It's partly that (after all so long as your new OS has a decent browser most people won't care), but also hardware support. Every single driver has some specific hardware's ridiculous and strange quirks and "yeah we comply with that standard except for all the times we don't", and re-writing every Windows, Linux, or *BSD driver for $NEW_OS just doesn't pencil out.