The primary vulnerability in Windows are buffer overruns. That's what most virus makers exploit, mostly because Windows has so many of them to exploit and they are so easy to exploit. Look back at the history of the patches, nearly every one is to plug a buffer overrun. That's a major reason why Linux and all its varieties and even Apple OS, are not as vulnerable.
There is also the matter that Windows is the target of choice, being an attack on Windows will affect the most users and Micro$oft is not exactly what you would call "loved", by its users, by its competitors, by its employees. Heck, I am not even sure Billy Boy loves it, other than it a great source of power and money. Another issue is Windows users include a much larger portion of computer illitterates, folks that simply don't know or don't care how computers work and are therefore less likely to take countermeasures or know what to do if a virus does get in.