There's nothing wrong with drivers in Linux; hairyfeet always bitches about drivers in Linux but he really doesn't know what he's talking about.
The main controversy with Linux drivers is that they're tightly tied to the kernel, and maintained with it; there is no standardized API or ABI for Linux drivers, so a driver for one kernel version will likely not work with other versions; drivers have to be ported between kernel versions. In addition, drivers are absolutely not binary-compatible between kernel versions, and have to be compiled for them. In practice, this isn't a problem except for proprietary vendors who don't want to open-source their drivers. For everyone else, they just contribute their driver code to the kernel tree, it's integrated into the kernel, and maintained with the kernel. If an interface changes in a new kernel version, the maintainers update the associated drivers accordingly. When distros build kernels, the build the kernels and drivers together. So the only problem is a few proprietary vendors who don't like this model, and want to keep their drivers closed-source. Windows itself is a prime example of why this approach is bad: Windows has a terrible reputation for reliability, and much of the reason for this isn't actually Windows itself, it's shoddy drivers from various vendors, especially small Asian vendors of low-cost peripherals, but also big ones had problems. Drivers operate at the highest privilege levels, so if there's a bug in them, it can easily crash your system, so code quality is paramount. Crappy drivers crashing gave Windows a terrible reputation, and MS had to fix this by instituting their "WHQL" program, whereby vendors had to submit their drivers to Microsoft to be certified. This is a big reason why Windows is now fairly reliable. However, it's not something Linux can do; there's no single company behind Linux, and certainly not with the financial resources, or marketshare clout, to force vendors to go through such an expensive and onerous process. No company is going to pay millions of dollars to have someone certify their Linux drivers, but to run on Windows, they will.
The Linux driver model works just fine for Linux, and it's part of why Linux is so reliable and easy to install on most hardware. Instead of hundreds of drivers for simple devices running on the same chipset, for instance (a common happening with things like SD card readers) there's only one, maintained by the community, with high quality. The main problem is with video drivers (NVIDIA and ATI), because these are far more complex than an Ethernet or USB driver, which a few motivated programmers can write a driver for in a short time on a volunteer basis. This is why Linux has had trouble with video support with high-end video chips. These two vendors have closed-source drivers, but to get them to work with Linux and its frequently updating (due to security fixes) kernels is a little awkward and has caused problems in the past. However, open-source efforts including "Nouveau" have made a lot of progress and are pretty close to replacing the closed-source drivers.