<p>I know enough to know that we need to get our application to deploy with a single user action. However, I <strong>don't</strong> know:</p>

<ol>
<li>What are some good tools to use in a .NET shop?</li>
<li>How do you manage config changes for each of your environments?</li>
</ol>

<p>Can someone point me to some good resources for continous integration. I'd like to see some theory as well as a step by step practical guide.</p>

<p><strong>Edit:</strong><br>
I'm in need to automated a web deployment right now; however, I'd also like to learn how to do this for desktop apps.</p>

Visual Build Pro
from Kinook is a pretty good tool for one-click deployment. It's easy to use and has a lot of capabilities. I have been using it for years.  Of course there's also NAnt, which I haven't used much.
As far as managing config changes, I manage multiple config files with extensions that indicate the deployment environment, and then just do a simple rename as a step within my build script.
For example, if I am deploying to Test, I might have a config file called Web.test.config, which gets automatically renamed to Web.config by the build script.