If you can endure the excruciating pains of MSBuild's copy statement, then you can do something like this as a post-build event:
<Copy Condition="'$(Env)' != ''" SourceFiles="$(WhereverTheDeployedAppIs)\web.$(Env).config" DestinationFiles="$(WhereverTheDeployedAppIs)\web.config" />
Now let's go through that.
$(Env) is the environment. You'll have to pass that in via your build script.
SourceFiles is set to the config file's original name (Web.MyFavoriteEnvironment.config, for example).
DestinationFiles is set to the same thing, only shortened to Web.config, overwriting whatever Web.config was there before. This is what your app will use.
Massage this to your app config file naming convention.
Now...
Although (something like) this works for my team, I really hope, for your sake, that someone posts something better.