The most important thing is they have a good history of uptime. There is nothing worse than working really hard to build a website and when visitors go to it, they get an error page.
The site also has to be quick to load. People don't have the patience to sit and wait for a site to load. If they are waiting for more than 7 seconds, even if it's on a dial up connection, they're going to close the window. That's potential sale that was wiped away because of poor hosting.
You need to be able to communicate well. A host should have 24 hour customer support. If you're looking at a hosting company that doesn't offer that, you should seriously reconsider. Nowadays, its fairly common for a host to offer around the clock customer service.
If your host offers cPanel, that's just a great perk. cPanel just has an abundance of great tools for your site. You can setup your email accounts through them, so your domains and emails match. They also have great traffic tracking software.
Fantastico is another tool that is a must have. Fantastico has a ton of great scripts that can be loaded onto your website. Scripts like Wordpress, which many regard as the best blogging software around. And best of all, it's free.
You shouldn't have to sign contract when you sign up with a web hosting companies. If they are confident in the service they provide, they should be able to hold you as a customer on a month by month basis. If that isn't the case, then you might want to look someplace else.
I hope this has helped you in asking some of the important questions that go into choosing a web hosting company.