I develop in Visual Basic .Net since 2001 and I love it and I hate it!!!
The order of presentation of these points is just based on the order in which he came to my mind...
In vb.net with visual studio, there is a visual line break between each method, property. For many people, it's not a good reason to prefer vb.net over c# but I don't understand why the c# team at Microsoft don't have implemented it. There is a add-in that draw this line in c# but thanx again Microsoft to have a c# team and visual basic team that don't talk to each other.
In vb.net, when you create a winform, you have two combobox in visual studio at the top of the editor and you can auto-generate event automatically when selecting an event on the right combobox. When you attach dozens of events each day, it can be very cumbersome to don't have this feature. With c#, you have a small button at the top of the property grid that can generate event but it's not fast as in vb.net. More, if you attach event of control in c# and delete the control on the form, the delegate created on the auto-generated code to handle event have to be deleted manually. Thank you again Microsoft.
In vb.net, when you try to modify a method that contain a linq query without modify the query itself, no problem but in c#, all the method code is locked. If you have a lots of linq queries or lambda expression, the edit and continue feature will rapidly be a good old thing. Ok, a little bit of exaggeration... but :)
In vb.net, when you create a method name and tap enter, the 'end sub' will be automatically created. In c#, do it yourself. Ok, if you have resharper or devexpress installed, it will be better but why all these little but greats features were not be implemented in c#.
In vb.net, when you have errors on your code, the errors are automatically displayed and when you correct it, these errors are removed of the stack in real time. In c#, you have to build your project to realize that you have successfully corrected or not the specified errors. Why c# team don't have put an option to verify in real time error like in vb.net. With big solution, no real time verification of error can be a very nice optimization of performance but I love to see a stack of error disapear while I correct it.
Like other person have mentionned, I think it's more easy to read vb.net condition if..end if, select case... end select but with devexpress painting bracket, forget what I said.
With vb.net, there are many many bugs in visual studio. Just to mention one in visual studio 2010, the intellisens don't filter correctly enumeration if you have the mode "common" activated instead of "all".
With vb.net, you are perceived as a dummy guy because statically, more bad programmers use vb.net instead of c# because c# is harder to learn and promote better programming practice.
Like other said, c# programmer have better chance to have a good job with more money.
In the head of customer, vb.net = guy who program in his basement with a bol of spaghetti of code. c# = wow, you are very intelligent. The fact is that it's not because you program in c#, that you make a good program but statically, yes.
With all these points, I chose to convert all my vb code in c#. I program with all the best practices of object oriented, design pattern, clean code with standards and strict syntaxe and I can program like that for 50 years but from the eyes of community, I'm not a good programmer. I will convert my code in c# with no other best practices and I will be another person; a great guy who you must respect..... :( what a joke...!!! but it's the reality.