C# 3 added LINQ, which is a major breakthrough for end-users, although I'm not fond of the query language. So really, C# 3 just added in some basic features you expect from proper languages. I do understand this required a huge amount of work, esp. with the tooling required.
C# 4 added dynamic (F# provides ? operator you can provide your own implementation for, if you really feel that strings look ugly). Oh, and it finally backpedalled on the no optional parameters (although the optional parameters is the same broken C-style callsite implementation).
C# 5 added async (F# had a more flexible implementation 6 years before).
What else? C# seems to have stagnated, although I understand that's a feature for some of their users. C# still lacks type inference in most places, making it extra verbose. C# expression trees are still very limited. C# still can't easily do tuples. Not sure they deserve a break; this was MS's "flagship" language.
OTOH, The CLR itself doesn't seem to be getting any upgrades, either - IL stayed locked at v2. It's as if they realised they have done better than the JVM can ever do (generics via erasure just sucks) so why bother pushing it further?
- Improve the GC algorithms, most JVMs have better GC algorithms
- Improve the code quality of the JIT and NGEN compilers, specially the set of applied optimizations
- Expose auto-vectorization and vector instructions (similar to Mono.SIMD)
- Expose something like C++ AMP on .NET.
Some of this was slightly improved on 4.5, but they could do more.
Not to mention that you are forgetting all the other JVMs that are also available out there.
Also it the set of tuning options is pretty thin compared with what most JVMs, Haskell and other GC environments offer for tuning.
Note that this is not a Java vs .NET rant, I work on both environments. Each has plus and minus.
TO me that seems to be a good thing. The language has picked up a lot of great features that make it nice to program in, but it is also making the language huge. How do all these new features interact? What are the emergent properties of the language? Personally I could use a few years to A) get legacy code caught up B) Explore what already exists.