You opened up a holy war with that question :)
Excuse the typos and rambling. I will edit this when I've had some sleep.
Windows - Descended from single user 8 bit operating systems. Still to this day has a great deal of legacy 16 bit code. This legacy has left Windows with an monolithic design. that is Microsoft stuffs everything into the kernel that it possibly can.
Windows is not just comercial software, it is produced by one of the greediest companies on the face of the earth. As such it's usage inflicts upon you many conditions. By using Windows you have agreed to allow Microsoft to search your premisis for ilegal copies of Microsoft software and to fine you for any violations they accuse you of. If you use a recent Microsoft compilor you agree not to write software which competes with core Microsoft business such as Office applications.
Windows because of it's monolithic design requires rebooting for what is a trivial change in most other operating sytems such as restarting networking.
Windows even the new "more stable" versions is far less stable than most other operating systems out there. Compared to Linux which generally will run without user intervention until the hardware ceases to function, windows requires periodic reboots. There are several reasons for this. The thuning going on between 16 and 32 bit code. The lack of garbage collection in Windows (Garbage collection is where an operating system goes out and finds all those orphaned memory requests left by programs that forgot to de-allocate them or that crashed before they could) as such any windows machine will eventually run out of memory just by being left on for too long. The bigger the memory leaks in the apps run on the machine the sooner this happens.
Windows by design is monolitithic. That means with most of the stuff happening in the kernal then the severity of any problem suddenly becomes magnified. Windows still doesn't have true protected memory. Something essential for any multi-tasking OS. It is still quite possible for user level programs to access and corrupt system memory on even the newer windows versions. Just more difficult than previous versions which had little or no memory protection.
Windows has carried a legacy of user permissions from it's single user days. This means that most users can access pretty much any dir and file on the machine in Windows default settings. To change the defaults requires a long and manually intensive visit to all the sub dirs you wish to block for non-admin users. The alternitive is to block at the top dir level. This however can cause the system to become unuable or even crash if done excessively. So very few windows machines have any file permission protection to speak of.
To aggravate this, for a windows machine to be usable for most people they have to be an admin on that machine. Besides being a huge security problem it is also inviting disaster. If you are Admin you have access to all of the dirs and can do massive damage to system files by accident.
Windows uses what is called the system registry. Not all that bad a concept in my opinion. The implementation was a nightmare and seems to get worse with each version of windows. First if your registry becomes corrupt your machine will eventually crash. Sometimes to the point you have to do a wipe and load. The registry is intentionally arcane. As such trying to edit settings can quickly become wild guessing games that can cause your machine to crash in a most spectaculer way. Just to edit the registry you have to have a special editor. Until recent versions there was no good way to back up and restore a registry. If you move a file or a drive letter changes major problems occur. To try to manually edit the registry to repair this is a nightmare and often fails. As such you have to completely reinstall software when you make major dir and drive changes as it is easier than trying to find the registry settings and manually edit them. Once the registry is corrupted enough, something that will eventually happen your machine is hosed. Nothing you can do but reinstall. If you attempt to put an older copy of the registry over the current one you at best lose quite a few settings and quite likely hose the machine just as badly as the corrupted version. So if you use windows and use your machine heavily you will have to periodcally reinstall everything on your machine.
Windows was designed without a thought to security. As such it has severe security defects built into it. To start with the kernel contains too many unessential functions. This means any flaw in minor software such as IE is a flaw that has system level privlages for a hacker. As a rule you want as little as possible in the kernel. Microsoft violates this philosophy, actually it celibrates the violation, tosses a party, throw's a parade and revels in being so insecure.
VBA was written because Microsoft could not abide using somebody else's standard. In this case a competitor called Netscape which used Java Script. VBA was based on Visual Basic syntax and incorporated into just about every fundemental Microsoft application. First problem was that VBA was written without and has never included a sandbox. That is it makes no attempt to isolate the VBA scripts from the operating system. This has been a flaw exploited by countless virii and hacks. Second only Microsoft uses it. As such it is non-standard and only works with Microsoft products.
Microsoft file permissions are a joke. To effectively use them requires huge manual effort. It also limits the usage of the machine to the end user. This creates a constant security threat as most users are fully able to replace system files. So as soon as they open a trojan or come in contact with a virus they are infected and the whole system is comprimised. In contrast Unix bases systems like Linux have restrictive file systems and only the stupidist Unix user does anything as root not absolutely required to be root to do. So contact with most worms, virii and trojans has limited damage potential. To take over a Unix bases system a hacker has to get root privlages and access to system files. This adds an additional step to hacking a Unix machine that doesn't exist in Windows for example. It also makes it harder to write an effective virus for Unix based systems.
Windows is a what you see is what you get OS. That is you can change very little about it. You can add a scheme maybe, change your wallpaper. It has only one desktop to start with and no way to add more. You can add software to a Windows machine but you cannot extend windows itself. Windows is closed source, so what Windows is really doing is hidden from you. There are areas that you as a user do not have access to even as an admin. Programs that run, which without special software you cannot even see much less stop, configure or monitor. With windows you really have very little control over your machine and how it is configured.
Windows uses propriatory everything. Very little in windows follows any standard, not even standards set by Microsoft. One version of windows will use one standard, the next another. Porting applications and even just interface designs between even windows versions much less to other operating systems is an uncessarily difficult task. Occasionally people give up on compatibility and do it the Microsoft way rather than the way the rest of the world does it, often with Microsoft's hand in designing a standard they will never follow.
Linux was born of a single man's attempt to port Unix to the PC. It has since grown to one of the most complex and feature rich operating systems around.
Linux carries true to it's Unix heritiage in many respects. A well configured Linux machine will run until you turn the power off or shut it down for some reason. Linux includes features like garbage protection and memory protection which help it be an excelelnt multi-tasker and extremely stable machine.
Anything on a Linux machine can be modified if you have the skill to do so. Most features that an average user will want to modify are easy to do so. Some still require strong C++ skills and or sifting through arcane configuration files.
Linux supports both command line and GUI interfaces. Unlike windows which attempts to force people to use a GUI for everyting, including tasks much better suited to a command line Linux allows a user to choose. So for GUI fans they can do pretty much everything in a GUI. The average user never has to touch a command line in Linux today. Most do as it is much easier to do some things in a command line than a GUI. Likewise there are tasks much better suited to a GUI. Personal taste should never be inflicted on others and Linux's configurabilty and flexability means a Linux user gets to do things the way they see fit, not how a Microsoft programer wants them to do it. Almost every application commonly used on a Linux system has several alterantives. If you don't like one application just install another that does it the way you want to do it.
Linux because of it's design is by default more secure. A first class firewall has been included and configured by default in Linux systems almost since Linux was born. Linux was designed to be a multi-tasking, networked machine with multiple users.
Linux is open source. So every line of Linux code is availible and can be changed. The more adventerous Linux users can modify anything on their machine and sometimes do. This is not for the fient of heart nor for the non-techie.
Linux distros typically come with at least one GUI manager with a default of 4 desktop managers installed. I say typically becaause there is a version of Linux for almost everything. Some tasks Linux does not only do not require a GUI at all, but a GUI would only slow them down. So for example a windows print server which sits in the corner all day never needs a GUI except when something goes wrong. A Linux print server can be installed without a GUI. This will make the Linux print server faster, more secure and more reliable just by not running a CPU intensive GUI on a task that does not need it.
Instead of a registry Linux has configuration files scattered all over the hard drive. The majority can be found in /etc, your home dir or the application's main dir. Some of these configuration files can be a bit arcane. Most include remarked out examples for most common examples. I have often modified one of these files knowing nothing about the software and just using an example line contained in the configuration file to accomplish what I wanted to do. For GUI lovers, the most commonly used configuration files include GUI editors. Compared to editing the registry I'll take the configuration files. Even if they are sometimes hard to find.
In terms of support it is actually better to use Linux. There is a legion of very helpful people out there more than willing to help with a Linux issue. You get this support for free. Sometimes answers are elusive. Sometimes you are given bad information. With Microsoft products the primary means of support is exactly the same. Legions of windows users willing to help you out. Sometimes the answers are bad. Sometimes good. Microsoft will sell you bad answers if you really wish to part with money. Rarely will Microsoft tech support give you an answer that actually solves your problem. More often it will be "don't do that" or something about that is how it was designed.
When it comes to security releases Linux does far better. The turn around time on a known vulnerablity is usually far shorter. Especially now that Microsoft has gone to timed security releases. Most sucrity vulnerabilities on Linux affect a very specific piece of software. As such once identified it can quickly and easily be patched. Only people who actually run that specific software are vulnerable. Windows has to test a patch under a number of conditions. The primary reason is it's monolithic approach to an operating system. Almost every security patch affects more than the software which had the vulnerabiltiy. Security patches even after testing have a nasty habit of crashing applications or causing instability in a machine. As a rule of thumb when I administered windows servers I'd apply only critical patches until a second release of a patch came out and they'd worked out all the bugs.
Linux file permissions while more secure do have a huge problem. They make file sharing and shared documents sometimes unreasonably difficult. User groups help but really Linux is unable to comprehend the need for multiple owners of a file or dir. Without modifying the kernel there are clunky work around for this but it is one of Linux's biggest weak spots.
When it comes to installing new applications both operating systems have severe draw backs. With windows most program use the registry. As such they are locked in place and rare is a program that actually removes all of itself when you ask it to uninstall. Installing and uninstalling software stresses the registry and is a major cause of registry rot and full hard drives. Being unable to move a program without uninstalling can be a major hassle. Even still most programs will dump the majority of it's files into the same dir. This means overwriting versions of the same shared DLLs sometimes. It also means that you are limited in partitioning options to the point that most people just create one or two huge partitions and are done with it. This is a very bad idea in terms of backing up, security and date survivability. With Linux most distros now have easy to use installation package managers like Yum and Apt-get. Still all Linux users will eventually have to face a tar ball sooner or later. There are several ways Linux applications come packaged and this can be confusing to new Linux users. Linux and windows users alike get stuck in dependancy hell at times. Linux users more often. Dependancy hell being that to install one file you need a certain version of another file. Which needs a another file to install that one, which sometimes cannot be done because that file needs a file which will not install because you have a newever version around or in the case of windows because changing a certain DLL will disable one or more other programs. There are ways around it in both opeerating systems but it's never pretty.
Most Linux distros come with thousands of programs all for free. To get the same software on a windows machine it would cost thousands of dollars. The quality of the softare varies depending on deffinition and purpose. Some will far outperform any windows equiv. Some is on par. Some is not up to par but still does the job. Depends on what you do. When it comes to tasks the average user will do Linux has Windows beat by far. If you are doing CAD drawing you might want to stick with your very expensive Windows program.
Most Linux distros require few driver installs. Unless you are installing bleeding edge or something really obscure you stick your hardware in. Wait a minute or run Kudzu/or similer software and you are up and running. Occasionally you have to configure drivers like softare. Sticking a CD in, installing, rebooting and hoping it all took doesn't happen to Linux users. The downside is when you do encounter hardware that is unsupported and that you cannot use the generic driver for you are often in for a Kernel recompile to get support for it or waiting for the next release of the distro. This is typical only of some bleeding edge hardware and very specialized hardware. This will also change as Linux becomes more common on the desktop.
Linux has for years offered clustering support. The first clustering software I know of was written in Linux. With Linux clustering has become mature and easy to manage. Windows is taking it's first stabs at clustering. Both operating systems are fast developing networked file systems. Microsoft still offers no built in SSH and SCP support. Instead it relies on ancient telnet and ftp. Two applications no self respecting securit administrator would allow run in their network. If you use them you have basically passed your user name and password out to the world. Anybody listening between you and an ftp server will see your username and password.
Remote connections to windows machines are increadibly bandwidth intensive as you have to use a GUI and by using one have to transmit so much more information. With Linux you can do command line remote administration and do so quickly, safely, securely and do anything to and on the machine you could do if you were sitting in front of it except push the power button or if networking goes down. To do ANY remote adminstration on windows, until recently you had to use third party software. It is still slower, less secure and limited. Especially by windows frequent need to reboot.
Linux takes care of many tasks that are manual or disruptive to windows users. Disk defragmenting for example. Linux file systems are less prone to it to start with by design. Defragmenting is done automatically and without user intervention on Linux. Windows it is at best an interuption.
Linux is far more secure than Windows. The modular design of Linux and stronger security model make sure of this. A very active and security concious community make it even more so. Linux is a better multi-tasker. A zillion times more customizable than windows. Linux is free. Linux comes with no restrictions about writing competing software. Linux users will never have a vendor knocking on their door and extorting money from them.