I'm pretty sure that it's not physically possible to tell what "slots" are open in a machine without opening it up (other than memory). You can tell what kind of cards are installed, but not necessarily "what else" you can install.
Motherboard information is typically available from the BIOS and reported in the System Information utility in Windows as System Model. This tool will also report enough information about the system that you can tell, say, whether the video card is AGP or PCIe.
You can use a tool like Belarc Advisor on each machine to get basically the same information you can get from Windows, but with more detail... like how many memory slots are available and free, etc.
I haven't had to physically crack a case to make a decision in quite a while. Usually I need to know things like "what video card do I need to get to replace this one?" or "what kind of power supply do I need to replace this one?" etc. If you're in a similar boat, then either tool I mentioned will work well enough.
If you're providing support for a single company (i.e. you're the IT guy), then it sounds like some inventory management is in order. You should be capturing all the necessary details to make these decisions without even having to physically go to a machine. Free products like Spiceworks can help with this.
Other than all that, one "secret" tool that I rarely find mentioned is BGInfo; part of sysinternals. I have BGInfo setup in a login script so that any time I login to a machine in my domain with my admin account, it runs a quick scan and sets the desktop wallpaper to an image containing a bunch of information about the system: name, processor, video card, memory, IP & mac address, etc. It has a bunch of fields like this built in, but you can also configure it to query registry keys, WMI entries, or even run scripts to pull information.
Personally I rely on BGInfo and Spiceworks to find information about the machine I happen to be sitting at.