In the end, easy deployment should be part of the architectural-level design. It's one of those things that can be tricky to shoe-horn in at the end of a project. In addition to just getting the site running, you also need to include things like versioning, configuration changes, build process, support for multiple servers (if appropriate), etc.
A few guidelines:
- Centralize as many of your configuration parameters as you can
- Use a build process that lets you switch from local to production mode
- Flag config parameters with "debug" or "production", to make it easy to know which is which
- It's generally a good idea to pre-build a site in your dev environment, and deploy in binary form
- There are add-ins for Visual Studio that can help simplify / streamline the process
- Consider using image-based deployment for larger multi-server environments
- Consider using a staging environment, where things are 99% the same as your production site
- Don't forget to include IIS configuration details as part of your deployment process
In case it's of any interest, I cover deployment issues in my book: Ultra-Fast ASP.NET.