Visual Studio has supported test-driven development for years, but it was always awkward to create new stubs and to synchronize IntelliSense if you actually wrote the tests first. Now you can switch into consume-first mode to keep IntelliSense from running amok, and you can generate stubs from their usage.
The Visual Basic and C# languages have both evolved in nice ways and nearly achieved feature parity. Visual Basic now has lambda expressions and implicit line continuations; C# now has simplified COM calling and dynamic language support. Both have a new feature called type equivalence that simplifies deployment against different versions of an assembly, which is especially useful when trying to program against the Microsoft Office APIs. (Lambda expressions are anonymous inline functions or methods; in the .Net Framework they are used as a concise way to define delegates, and they're very useful when writing LINQ queries.)
F# is a functional programming language based on ML and OCAML, which uses the .Net Framework and interoperates with other .Net languages. F# was previously a research project; it's very nice to see it as part of Visual Studio 2010.
When working with big Visual C++ projects, I used to dread making changes to core header files; it would nearly always force me to take a break while the IDE caught up. The IDE is now smarter about parsing files in the background.
The VS2010 C++ compiler now supports the lambda expressions, rvalue references, compile-time assertions, expression type discovery, and automatic type deduction features of the C++0x standard. Another piece of good news is that the VS2010 C++ compiler has a mode that is backward-compatible with the Visual Studio 2008 tools and libraries. This will make it easier for individual developers to upgrade even if the rest of the team doesn't want to switch over.