True, hardware support for GNU/Linux has improved greatly in the last decade. Today you can pick out any computer system and stand a strong chance of having it work out of the box with your distribution of choice. Yet enough gaps in support remain that doing research before buying remains a sensible idea.
These days, too, you can take support for many types of hardware for granted. Almost all motherboards, hard drives, keyboards, mice, network cards, DVD drives, and flash drives should work with GNU/Linux without any trouble. However, you should be wary of hardware that is operated by software rather than buttons, because the software is likely designed for Windows, or sometimes Mac OS X. Of course, if you think for a moment, you probably want to avoid such hardware anyway -- a software-driven DVD drive, for example, is going to require a couple of extra reboots if you ever want to start your system from it.
Even when you can take so much support for granted, many pieces of hardware remain a gamble. Since few manufacturers mention GNU/Linux support on their packaging, let alone their Web sites, your only recourse is to search the Internet for information. Your results will inevitably include dozens of pages, many outdated or incomplete, all of which makes sorting and assessing the information a time-consuming, often confusing task full of jargon that only experts can fully understand.
What follows is an effort to list the sites with the most current information available about cards and peripherals. The information varies from the vague to the exhaustive, but, in all cases, represents the most succinct and complete resources of which I am aware.
If you want to know whether a video card is supported, you have two main guides. For free drivers, check the X.org site's list of supported cards. For proprietary drivers, check the manufacturers' sites. Most people will be concerned with the proprietary drivers for Nvidia and ATI, the two leading video card manufacturers. You can also check the Nouveau project, which is developing free drivers for Nvidia. The Avivo project is also developing free drivers for the R500/R600 lines of ATI cards, but, so far, none have been released.
If you have a choice between free and proprietary drivers, your choice may be based purely on your philosophical preferences. However, just as likely, your choice will involve a tradeoff of functionality. Broadly speaking, free drivers for ATI and Nvidia tend to lack 3-D support, while the proprietary drivers of ATI tend to be slow and buggy and those for Nvidia fast but variable in quality. In other words, none are completely satisfactory.
Another consideration is your distribution's policy about which drivers it ships. Commercial distributions like Linspire and Xandros often ship the proprietary drivers, while Ubuntu uses the free drivers by default but includes a Restricted Drivers Manager from which you can easily install proprietary ones, and Debian offers proprietary drivers in the non-free sections of its repositories. Fedora 7 is one of the first to ship with the free Nouveau drivers for Nvidia cards. Whichever drivers are available in your distribution's native package format and repositories will be the easiest for you to manage.
No single site contains complete information for the concerned consumer buying sound cards. For a succinct summary of GNU/Linux-compatible sound cards, you can go to the Linux Sound site. You may also be able to winnow out useful information from the mailing lists of Linux Audio Developers.
Another useful source for sound information is the Soundcard Matrix of the Advanced Linux and Sound Architecture project, whose work provides sound support for modern distributions. The matrix is no longer maintained as of May 5, 2007, but its port to a wiki is still incomplete as I write, so, for the time being, you should use the old page. The matrix gives detailed information about each driver for developers, but, so far as consumers are concerned, what matters most is whether a particular card is listed. If a card is listed and the Notes column has no comments about the state of support, then you can be confident that the card will work in modern distributions.
You should be able to get basic functionality in GNU/Linux from any printer that supports the PostScript printing language, thanks to Hewlett-Packard's free drivers. However, if you want detailed information before buying -- especially for multifunction printers -- check the Linux Foundation's Printer Compatibility Database, which is part of the Linux Foundation's OpenPrinting project (formerly LinuxPrinting.org).
The Printer Compatibility Database is almost an ideal resource for printers. Its database of printers is close to complete, and you can search it by model, manufacturer, or driver. The support offered for each model is summarized on a four-point scale -- Perfectly, Mostly, Partially, and Paperweight. The database holds information on the drivers that work with each printer, where to get detailed instructions on configuration, and information such as the resolutions supported and reader-contributed feedback. Alternatively, you can go to the Suggest Printers page, which recommends what manufacturers and models to buy based on your need and budget in the categories of color inkjets, monochrome lasers, color lasers, and high-end lasers. These recommendations are based in a large part on the reports in the OpenPrinting forums, so you can search them for more detaisl.
If you scan from a multifunction printer, you can find information about it from the Printer Compatibility Database. However, the main source of compatibility information about all types of scanners is the SANE project's Supported Scanners Search Engine, which will tell you whether a particular scanner is usable under GNU/Linux. Generally, the status is either complete or unsupported -- but little additional information is available in many of the results that are more than two or three years old. Unfortunately, too, the search fields require you to know a specific manufacturer, model, or product ID, rather than providing drop-down lists to choose from. To get more detailed information, try the SANE project's forums.
Modern digital cameras have mostly abandoned the proprietary formats of the past in favor of open USB protocols that are easy for GNU/Linux to support. However, if you want to make sure that you aren't considering an exception, gPhoto, which provides the main free libraries for camera support, maintains a list of 914 cameras as well as the state of their support. Another source is Hubert Figui√®re's Digital Camera Support for Unix, Linux and BSD, which gives more detail about not only the cameras supported, but also how to configure them, what is not supported, and the issues involved in support. Both of these sites give their information in lists rather than searchable databases.
A few years ago, modems were the major gap in hardware support. These days, it's wireless network adapters. Moreover, frequent releases of new models makes support difficult. In some cases, two cards that are supposed to be the same model may have different firmware and require different drivers.
The best single site for keeping up-to-date on the state of wireless support and the issues and history surrounding it is the Wireless LAN Resources for Linux site, which is maintained by Jean Tourrilhes and sponsored by Hewlett-Packard. The information on the site is chaotically presented, but with patience you can extract useful nuggets from it.
If your wireless card is not supported, you may be able to get it to work by using either ndiswrapper or, for Broadcom cards, bcm43xx-fwcutter. Each of these projects uses resources from Windows or Mac drivers to enable the cards they support under GNU/Linux.
The main disadvantage of both programs is that, in each case, you need to be able to use the lspci command to obtain your card's bus ID before you can say for sure whether your card is supported. Before you buy, the best you can do is check the list to see how many cards that are similar to yours will work with ndiswrapper.
Laptops and other mobile devices
Tuxmobil maintains lists of laptops, music players, cell phones, PCMCIA cards, and other mobile devices in a collection of PDF documents. The information on the site varies widely in detail and quality, and much of it is distribution-specific. However, with a little searching and some creative adaptation, you still have a good chance of finding useful information here.
Other information sources
If the sites listed here fail to give you the information you need, try the mail forums and IRC channels for the distributions you are considering installing. Often, volunteers maintain specific, step-by-step information about how to work with troublesome hardware, and are happy to guide you through your efforts to learn or configure.
In fact, you might consider searching the forums for a large distribution like Debian and Fedora even if you don't plan on using it. The sheer volume of information makes the forums of large distributions a useful resource. The disadvantages are that you have more information to search through, and may have to adjust file locations to the distribution that you are actually using.
Keep an eye, too, on sites like Linux Hardware.org and Linux Devices, which regularly publish reviews of how hardware performs on GNU/Linux. The information on such sites is usually not exhaustive, but you may be lucky and find the information that you currently need.
In the future, another useful resource may be Hardware4Linux, a site which is attempting to create a list of usable hardware rated by users. However, currently, the site has less than 1200 replies or 5300 ratings, so for now the most useful part of the site may be the comments users have submitted.
If you are buying a ready-made system, the simplest way of getting information is to take along a live CD of the distribution you plan to use when you shop. Show that you are genuinely interested in buying and engage the store clerks in conversation, and in many cases they will allow you to boot the live CD, even if they have never heard of a live CD. Both the performance and the information you get from the live CD should tell you most of what you want to know.
With all these sources, you should be able to remove much of the guesswork from buying hardware on which to run GNU/Linux. Undoubtedly this list is not complete, so if you know of any other resources, please add them in a comment.