You are right on some fronts. It does require some work in Emacs to set up the ideal dev. environment.
I mostly do C/C++ stuff. I use gnu global for code tagging and navigation [1](aka "goto definition" thing). As for project organization, I have no experience but you might want to check out CEDET [2]. It appears that CEDET has made it into emacs trunk, so hopefully you can get some nicer "project" stuff in emacs soon.