At the moment I check in all my files (including dll\'s, VS solution files, images, etc). I often need to checkout these files to a staging server or to a another developer
If everyone is using the same IDE - check in the project files as well. It helps with having proper formatter settings, build settings, etc. If that's not the case (for an open source project, for instance), just leave the code and the needed build files. Nobody cares what IDE you're using.
Also leave out everything that is compiled or generated. Instead, make sure your build process does that when it's needed.
I love the way Maven handles this stuff . I Just check out the project, which contains only source and no dependencies and if I want to import it into eclipse, all I have to do is run mvn eclipse:eclipse
and all is set up for me. If I want to get rid of the eclipse-specific junk, I run mvn eclipse:clean
. The same is true for other IDE's.