Interesting discussion here. I've had about 7 yrs programming in Windows/.Net and 3 yrs in Java experience, and I agree that C# as a language has more than caught up with Java, and become more advanced and convenient to use, esp Linq. After using Linq for everyday tasks like filtering collections of objects or parsing XML, it's hard to go back to the "old" way of doing things; it's just more expressive and better for the VM too as language becomes more declarative for the CLR to optimize in the future (parallelize behind the scenes for example). New features coming out in C# 4.0 like writing dynamic language directly in C# and integrating with the static part just shows that the MSFT folks are constantly improving the langauge given the trends.
On the other hand I also agree that JVM is much more portable and in use than CLR, and I hope that MSFT realizes the conflicting goals of having the most popular developer platform and tying companies to Windows. After dabbling in both open source tools and MSFT tools, MSFT developer tools are indeed the best (Visual Studio beats out Eclipse by wide margin); it'll be a shame for MSFT to continue to keep those superior tools and languages behind the walls of Windows platform. Visual Studio should've beeen cross-platform like MonoDevelop. It would be interesting if in the future the Mono implementation becomes more popular than MSFT's implementation. I totally salute the efforts of the Mono folks and think that MSFT should've been the one pushing for the effort and making the entire .Net more open and license free (not just the run-time and the language but all the frameworks as well).
The macro trend is for technologies to be more open, so that businesses collaborate with a fraction of the effort on the technologies (e.g., Linux kernel) than if they were to implement the whole thing themselves (like what MSFT is doing), and also benefit from having a stake and say in the direction of the technologies rather than being dictated and tied to a specific vendor. That's why Unix/Linux is so popular with businesses, from the small device (iPhone, Android, Palm Pre) to desktop (like Mac OS and Ubuntu) to server.
I have to check out Scala given your high opinion :). I heard twitter rewrote their Ruby code to Scala for performance. One thing I wonder about these other JVM language is performance, whether the community is able to make it keep up with Java (even though all compile down to Java byte code, I assume the compilation itself could have different efficiencies).