I was in Redmond a couple weeks back for an internal training event for Microsoft technical folks in the field. Think lightweight TechEd and you have the general idea. Since I had been to TechEd already, I decided to sit in on sessions that I had either missed or normally would not have listed real high on my "must attend" list. Since I am normally a C# guy, I decided I would take this opportunity to sit in on some VB.NET sessions.
The language differences have been covered elsewhere, and I think that for the most part they do not signal a fundamental decision point between VB.NET and C# when making a choice of programming language. In some cases the language differences surely would, but for most applications, probably not, IMHO. However, I think we are starting to see the beginning of the end of such a situation. If you combine the language differences with differences in tools in the IDE or other non-language features, you start to see some clear cut decision points when choosing the lanaguage you use.
For example, VB has some nice IDE features and VB only infrastructure (the My feature, some app config properties, etc.) for WinForm development that are very useful and provide some clear advantages over C#. After sitting through one VB WinForm session, I seriously wondered if I would do another WinForm project in C# just because some things were much easier. I almost shed a tear for my lost semicolons.
Now if you combine this with some features that almost didn't make it into one language or the other (refactoring for VB and Edit-Continue for C#), you can see that the likelihood of continued divergence will only increase. And to me, this is a shame. While I was a C# guy, it was always nice to say to a VB developer, "you can do the same thing, just a bit different." We were all .NET brothers and sisters. Now though, I will have to look at someone and say, "if you use language X you can't really do this." That sucks.
I hear some of you saying that if you can do everything in every language, why do you need multiple languages. Some languages make solving certain problems easier. Lots of reasons for that that have been covered much better in other places than I could possibly do here. And again, I am not saying a few differences are bad. What I am saying is that the "competition" (and oh yes, there is competition, believe me) between the C# and VB teams to push the envelope leads to some poor decisions for the broader .NET community. Well, if C# is gonna refactor, we will edit-continue. If VB is gonna have the My thingy, we will add anoymous methods. And so it goes. Not exactly that way, but you get the idea.
In particular, since .NET is supposed to be about developer productivity, making one community more productive than another due to IDE features or other types of non-language enhancements seems lame. I don't see much of reason why the My object could not be available to both C# and VB developers, for example. Unfortunately, I expect (and I have no insider info, just my hunch) that we will see continued divergence between the capabilities of the two lanaguage/IDE combinations. We may well be back to the days when I have to say, "I'm sorry son, but you can't play with Bobby anymore because his dad is a VB developer." And if that comes to pass, I will be a very sad "C#" developer.