I run my own server. You mainly need a static IP address and enough bandwidth to handle whatever traffic you expect. And you need an upstream ISP that doesn't object—some ISPs, particularly cable-based broadband providers, do not want you to run servers on their networks.
Even an extremely tiny, cheap computer will do, if you run UNIX or Linux on the machine. You have to know how to set things up, of course. Windows is easier to set up and manage, but requires vastly more hardware, and its ease-of-use can lull an administrator into not paying the proper attention to security.
And the server really needs to be a separate machine from the desktop; it's very awkward and risky to try to run services on your desktop machine. A simple modem/router can handle the mixed traffic to and from two or more machines on a home LAN.
If you can get your ISP to provide both a static IP address and reverse DNS to your domain, then you're in really good shape (and very lucky). It's not required, but it helps.
I have a downloadable guide at
http://www.atkielski.com/PDF/data/WebSite.pdf that explains how to set up a Web site and covers some of the issues involved with running your own server, although you'll need to know more than just what's in the guide if you plan to operate your own server.