Originally Posted by JediDrunk
I guess what I'm really asking is: How do I determine hardware dependencies for my devices?
One thing I did to fully customize my kernel is read the kernel log file (perhaps /var/log/kernel.log, the name changes from one distro to the next). Find a spot in the log where a reboot starts, start reading from there. You might find a module saying something like "exiting, hardware not found". You now know that the module can be left out of your kernel. Just keep on reading, take note of the names of devices that were properly set up.
Since many distros make kernels that enable just about every module, you should have a pretty decent list of hardware+modules when you are done.
I agree with ilikejam about statically compiling more "constant" things, and leaving others as modules. Good advice.
Finally, there is "lspci -vv", and lsusb. They'll give you a good idea of what you need in your kernel.
PS: Expect to fsck up your first few kernels. Keep a working one handy!