You don't even need a static IP address - you can use a dynamic DNS service like
dns2go or
dynu to keep track of the dynamic DNS your ISP gives you -
for free - if you use a subdomain name from the dynamic DNS provider (which would be something like mysitename.dns2go.com). If you want to use your own domain name (like mysitename.com) then the dynamic services will charge you a modest amount per year. In which case you can find a "real" web host for less money and let them host it instead of using your own server.
Now this will work better if you have a low-traffic personal site, too much traffic will overload both the dynamic dns server and your own connection - and maybe get you some unwanted attention from your ISP. I run 3 semi-private web sites and 1 ftp over my dynamic-IP residential cable account. No one's complained so far. And it costs me exactly -0-, other than my regular monthly ISP fee.
Of course, you will also need a server with the appropriate web server software, along with the knowledge of how to secure your site against hackers and prevent your machine from being used for various distributed denial-of-service attacks and other fun stuff.