http://www.webhostingtalk.com
They are the best place to find hosts. Before you purchase, make sure to search that forum for the name of the host and read any threads that come up. If anyone has any good/bad experiences, it will almost always be mentioned in a thread.
A good host I've used in the past is
http://asmallorange.com/. I have my own VPS now, outgrown the cheap shared-hosting stuff, but they were pretty good to me when I used 'em last.
For domain names:
never buy from your host. You are asking for trouble if you do. Buy from a real registrar. The only registrar I can recommend is
http://www.namecheap.com/. GoDaddy is a popular name these days, but they are absolutely horrible if you ever run into any trouble and need to get something resolved.
Good luck!