You'll want the ability to upload files to your web site without having direct access to your server. However, where many sites on the Internet will tell you to accomplish this with IIS's FTP server, for security reasons it's not a good idea. This is because when you connect to IIS's FTP server, your user name and password will be sent in plain text...never a good idea when passing along user credentials over the Internet.
Now you need to make sure that when a request to your site comes in from the Internet, your network configuration allows the request to pass through to your web server. I'll assume you are using a router that connects to your modem, and that your web server has a connection to the router. There are two ways to allow external requests to pass through to the web server, depending on your equipment:
The next step in the process of self-hosting your own site is to set up a computer as a web server. To do this on Windows XP Professional or Windows Server 2003, you'll need IIS installed. On Windows XP Professional, you will only have the ability to create a single, stand-alone web site, while Windows Server 2003 allows you to create as many web sites as you'd like to. So, if you want to host multiple domains and you are running Windows XP Professional, you'll need to resort to a redirect script or some other "trickery" to allows users asking for http://www.somedomain.com to go to a different location on your server than those asking for http://www.someotherdomain.com. The rest of this tutorial assumes you are using Windows Server 2003, but other than the instructions for hosting multiple web sites, the details are pretty much the same.
As I've previously mentioned, you need a dynamic IP address resolution service in order to reliably host your own service. I will explain how to set this up using a particular provider of this service, DynDns.com. You'll want to visit this company's site, create an account, and then click on the "Services" link at the top of the page. On the page you are taken to you will click on "DNS Services" on the left hand side, and you'll either want to select the Dynamic DNS or Custom DNS service. The Dynamic DNS service is free, while the CustomDNS service costs 24.95 a year. Take a look at the difference in features and see what works for you. Personally, I chose the Custom DNS service because 24.95 a year is cheap and it offers a few features and better support. This tutorial assumes you are using the Custom DNS service, but I believe the user-interfaces to each system are close enough (if not the same) for you to follow along if you choose the Dynamic DNS service instead.
The first thing you'll want to do is to set up a domain. If you don't own a domain yet, I recommend www.dyndns.com, mostly because this is the company you will be dealing with in this tutorial in terms of self hosting--so why not go through the same company for all your needs? Also, although I didn't get my domain via dyndns.com, based on what I've read they have some nice tools available to manage your domain. If you don't want to go through dyndns.org for either purchasing a domain and/or self-hosting your site, then feel free to use other services--the concepts in this tutorial will still apply.