Well I was at the public library today with my 4yo (I had thought about naming him SQL but my wife frowned...oops there's no smiley for a 'rimshot'.) Anyway, I found they had a decent beginner book on Python, so I got that for my son, and he has been working through the 1st 6-or-so chapters this afternoon. He seems quite absorbed and the new syntax doesn't seem to bother him at all. So I'm encouraged by that.
I don't want to throw too much at him at once, but rather let him work his way through this Python book, then maybe see what I can find for C# or Lua or JS or even VB. Hopefully, he'll get enough depth to deal with the projects he's working on, as well as starting to imagine new possibilities. With exposure to a couple different languages (we have a long summer vacation coming up after all) I expect he'll learn more about the general practice of programming (not least the inclusion of plentiful comment lines and documentationat least if he wants Dad to help with debugging!) I don't plan to rush him along or anything, just let him delve into Python and try to be attuned to when he's ready to try something else.
Python is a pretty good choice for a starter language, IMO. Java was the one I was going to recommend, but either one should be fine.
VB and Javascript are interesting choices. As someone with a Computer Science degree, I think they are both horrible choices. However, my first exposure to programming (when I was 9 or 10 years old) was first through BASICA and Logo (anybody remember that language?). So, in that sense, I do see some value in a language that is simple to learn and quickly shows you the results of your work.
I guess it really depends on you and your son's goals. If it is simply to see if he is interested in programming, then any language will work. BASICA and Logo were enough to get me interested, and the structured languages came later. However, if he is already interested and he wants to start developing some CS skills, I would steer him away from VB and towards one of the C-derived languages (Java, C, C++, C#, etc.) for his next language. VB probably isn't the best language for teaching good programming habits, and it also has lots of little quirks that are specific to VB and don't make much sense if you are used to other languages. Javascript is also very weakly-typed and has no debugging to speak of, so I would probably avoid starting with that one if he is getting serious about programming.