I use C# for my regular programming, and am actually quite please with it, especially with the direction it is heading with features associated with declarative, functional and dynamic languages such as iterators and anonymous methods. I do turn to using managed C++ (and now C++/CLI) in a separate class library for things I can't do easily in IL.
However, I found myself wondering whether I should have opted for Delphi, which from surface appearances seems to be a superset of C# 1.0 with the added benefit of being able to target both Win32 and .NET, even without software modification. Had I chosen Delphi, I might not have had to worry about distributing a 23MB runtime with my application. In addition, the Borland guys added in C#Builder and C++Builder into the new Delphi 2005 mix, and my guess is that there is probably a fair amount of integration between the languages. Both Delphi and C++Builder (C++ extended for Borland's VCL) were early contenders for my chosen programming language, before I opted for C# and the .NET platform.
I have also been more envious of the better pedigreed Java crowd. The Java crowd tend to come from a more academic, CS environments, and the sophistication of the libraries appear to reflect that. New innovations tend to appear in Java first and later migrate to the .NET world such as unit-testing, aspect-oriented programming, although I am a bit disappointed in the new language extensions in Tiger, the latest iteration of Java. I wonder whether the innovations are due to the Java's longer history or the greater collective IQ of its user base. However, .NET world does seem to win in it's greater usability and friendlier tools.