Okay, here's why, for me, Windows won't do:
1. I'm a control freak when it comes to the computers I use. I want to know exactly what is running on them, when it's running and why it's running. I want the ability to customise it completely to my requirements, I want to be able to remove anything I don't need and add anything that I want to add. If, with that level of control, I mess things up then I accept full responsibility for doing it, I don't need to place that responsibility into the hands of some corporation to manage on my behalf.
2. The Windows registry essentially makes the OS unusable to me and is a poor design decision on the part of Microsoft. It uses obfuscated entries that defy common sense and you really have no way of knowing until you try it whether or not changing a Registry setting will crash your system when you do it. On the other hand, UNIX/Linux uses common sense for configuration - if the config affects everyone on the system, it will be somewhere under /etc, if it affects a specific user it will be a "dot file (or in a "dot" directory) in that user's home directory. All the configuration is stored in flat text or XML files, I can copy them onto other machines at my leisure to copy settings across, I can make a backup before I change it, and I can write scripts to change it automatically. I can also change configuration for a test user and test the settings before rolling them out system-wide, there's little or no chance of me crashing a system completely when I do it that way.
3. In Linux, if I migrate or backup a user, I just copy across or archive their home directory - done. In Windows, I've never been able to do that. If I try to copy across everything under the user's "Documents and Settings" or "Users" directory, it invariably fails because of some file or directory permission somewhere not letting me do it.
4. In Linux, I have full control over how I configure the kernel in terms of deciding how I want to use a single OS image across multiple machines. I can use a lowest common denominator configuration, for example, such that a Linux OS image running on, say, a modern multicore 64-bit AMD CPU can be imaged straight onto a old 32-bit Pentium-based machine, it will boot up and start working. Do that with Windows and the second machine will usually blue screen on boot up because the CPU is too different from the first one - not to mention having to mess about with license keys or, alternatively, spending hours or days making and testing a slipstreamed image with all the settings installed from boot.
5. I can build a base Linux installation that loads up certain core services on every machine but then, say, boots up a GUI environment entirely appropriate to the device it's on - for example, I can use a lightweight DE on a low-power device, or I can have an X86-based computer have an identical look and feel to an ARM one. I get to decide how that looks, not Microsoft.
For what I need computers to generally do these days, there is very little difference between the capabilities of a Windows PC and a Linux PC and my desire to control all of my computing is clearly at odds with Microsoft's desire to control all of the computing on a Windows PC. That makes Windows useless to me, apart from a half-dozen or so killer apps that run fine on a virtualised XP instance within Linux.