The status of Linux hardware
There are thousands of devices, in millions of combinations, available for use in a PC. Almost all of these devices are targeted primarily toward Windows, and while many are supported by Linux, a lot of them use drivers developed by third parties who do not have full access to hardware data and must therefore reverse engineer hardware in order to gain support for it. This grassroots hardware effort is similar to the development of the entirety of Linux, except that Linux didn't have to deal with so many unknowns.
The problem is when manufacturers don't want to have open standards or don't even want to open the specifications on their hardware. Some companies go as far as to try to circumvent the Linux license, such as NVidia, who at one point released an "Open Source driver" that was not humanly readable, essentially defeating the purpose of Open Source. Now, while not doing that, the company only has a binary driver available, making it difficult to distribute the driver with a Linux distribution, because the source code would not be available. Presumably NVidia does this to prevent competitors from reading its source code, in order to find out how its chips work. However, this also makes it more difficult for Linux users to take advantage of its hardware, because they have to use prebuilt drivers that may or may not work on their particular distribution.
On the opposite side of the spectrum, NVidia competitor 3DFX has embraced Open Source, releasing both its drivers and its Glide 3D API as Open Source, making it extremely easy for the 3DFX drivers to be integrated into a distribution. However, 3DFX has another problem -- its latest cards, the Voodoo5s, do not have full Linux drivers available for download. There are beta drivers, but they only use one of the CPUs and do not support FSAA, essentially turning the Voodoo5 into a Voodoo3 with 32-bit texture support and more RAM. This idea of supporting Linux, but only to a minimal extent, is also not acceptable.
What can be done?
There is much that can be done in order to help this situation. If you are a developer with hardware skills, you could help write drivers for new components or update old ones. Perhaps donating some time to various Open Source driver/hardware projects, such as LinModem.org, a site that talks about the possibilities (and initial support for certain Winmodems) of Linmodems and their many potential uses. But what if you are not a programmer?
In this case, you may have even more power than you think. If you see a company that doesn't support Linux, buy a product from a competitor who does, and email or write a letter to the company explaining to them why you did not buy their product. This is the only way companies will learn that Linux support is needed. Also, petitions can be extremely helpful. If you belong to a LUG, organize petitions, contact other LUGs, and contact the Open Source community through things like mailing lists (though only if it relates to the subject) and Web sites such as NewsForge, Slashdot, and others. Another possibility, if you have some extra cash floating around, is finding out about donating money to projects working on support for the hardware you need.
If you are a corporation, you might even be able to sponsor a project, such as has been done with ReiserFS, which is sponsored by MP3.com, SuSE, Integrated Linux and BigStorage. By injecting money into a project, you may be able to get programmers to put more work into a project. At the most extreme end, you could hire programmers to work on Open Source projects. For some this may seem extreme, but if you need particular hardware or technology supported under Linux, this might not be a bad option.
In the end, we find that the fate of Linux hardware support rests in the hands of you, the user. If you continue to buy hardware from companies that do not support Linux, they will have no motivation to support it. Remember, these companies are in this for the money, and they need financial reasons to support Linux.