The main requirements you will need to take in consideration when setting up a web server at home (particularly a hosting service) is your ISP and bandwidth.
Some ISPs do not allow their clients to set up web servers at all. Most do allow you to, but as long as it not for business purposes.
Also on the same topic as ISPs you need to have adequet bandwidth, particularly upload bandwidth. Most home connections have comparatively small upload bandwidth. If you're going to be hosting multiple sites then you need at least 10meg upload (which isn't common from home user's ISPs). If you want to set up a hosting company you really need to be looking at 100/1000meg upload connections, which are not available at all for home users.
Once you've made sure you have permission from your ISP and you have appropriate bandwidth then you can sort out the actual server computers. These actually don't have to be that spectacular. A pentium 4 should be fine. If you want to get really powerful then there's always Core 2 or even Xeon. A fair amount of RAM is always good, 2gig is plenty. Then lots of HDD space to store all the files (its really up to you how much). No graphics or sound is required for the server, heck you don't even need a monitor, mouse or keyboard because it makes sense to remote connect to the server.
So once you've got all the hardware then you need the software. You need to decide whether to go down the Windows (ASP) side or the Linux (PHP) side. Personally I would go Linux becuase its free, more robust and easier to set up.
You'll need to install a Linux distro, Apach, PHP, mySQL and some form of mail server.
Then you just need to configure them all, then you're set.