This is my experiences on the toolchain in the question, over 3 years on the project.
We found fogbugz very effective in defining tasks, task assignment and in predicting project progress. All round, this was a strong part of the tool chain.
Visual Studio 2008: Okay. Some problems with the large number of projects in the solution.
Source Control: SubVersion was okay in the intial stages of the product. However as progressed, we ended up with 5 products all from the same source code, each with different release points. The majority of the development team copy and pasted code between branches rather than merging across - and the result became bits of code being lost in branches rather than being in the trunk and merged into the branches properly. This was a weak area of the tool chain.
CruiseControl.NET: It was okay, but adding new branches means editing config files by hand. Using Nant with it to script the build process was easy to setup, but over time as newer .NET features were added, its limitations started showing. e.g. compiling XAML pages. I would probably find a replacement next time.
Unit Tests: NUnit generally did the job. most of the developers did not really push it hard, in terms of tear ups and tear downs etc but this part did its job catching coding errors.
NCover: We found running NCover semi useful. It was more a review tool when we found a bit of work that was found lacking in QA. It was often found that code coverage of unit tests was <10% in poor code.
Zip Files worked in our case because we were shipping an OEM product, and these files were then placed into ImageX WIM image files.