I am not an expert coder...but I am an expert at being a beginner, so maybe that qualifies me a bit more to give my opinions than being an expert coder would, plus I have worked with a lot of beginners on the self-learning path.
My best suggestion is to find free tools for each of the major languages that he is considering, and go through them and try them all one at a time. Go find a good public library with some recent books and borrow them, one language and one or two books at a time.
If he finds a good book that he can grasp and keeps him motivated till the time he has to return it, he should buy it.
Don't run out and buy a book and think it's going to be good. I made that mistake too many times where I looked through the book at the store and thought it would be good, only to buy it and get more than halfway through it at home and still not be able to write a single line of code. Don't make a money investment in a language till you are sure you are going to stick with it.
One of the things that will keep him motivated is projects. They have to be fun or useful because if they are boring or useless, he is going to want to jump ahead and get to the 'good stuff' and that's where he will get in trouble. He should always be asking himself with each new thing he learns 'how can I use this' and come up with his own creative ways to use the skills he is learning by creating his own projects, using everything he has learned thus far. This can help relieve some of the desire to jump ahead of yourself and attempt to run before you can crawl.
If he finds himself being impatient and the desire to jump ahead is just a bit too much, I suggest Delphi. He can jump in and make his 'hello world' notepad in less than an hour.
The reason why I chose Delphi was because it was the first language that made sense to me, clicked in my head, and I actually was able to get somewhere with. I tried Java, C, C++, JS, Leopard, Ibasic, and god only knows what else. Then I tried out Delphi...got stuck at one point, tried VB 6, hated it, got over whatever fog was going on in my head and ran back to Delphi. This is where I plan on staying for awhile, till I feel confident & competent enough to move on.
As far as where to go in the future, after Delphi, one can begin the crossover to C++ with C++ Builder, translating your Delphi code and seeing where the differences are with how things are done. Then after that, in whatever direction with C++ you would want to go, getting in even deeper into the language and moving away from a Borland IDE and the VCL.
Delphi is also a good starting point if you would like to learn C# later on, too. There are a great deal of similarities between the two. (and C# coders shouldn't forget or count out Mono for making .net cross-platform) There is even a Delphi.net to help make the transition to .net coding without learning a new language first.
It is also supposed to be much easier to go from Delphi to VB.net, than VB 6 to VB.net.
As far as Delphi being cross-platform, it is possible to write stuff in Delphi (or better yet, object pascal, which is essentially the same thing) and compile it with
FreePascal to run native on Linux, FreeBSD, Mac OS X/Darwin, Mac OS classic, DOS, Win32, Win64, WinCE, OS/2, Netware (libc and classic) and MorphOS. You really have to know what you are doing though and it has to be written with the intention of doing this. Not likely if you wrote it with windows in mind, using win32api, that you will be able to compile it to run on something else. But if you wrote it to be cross-platform, you could.
I wouldn't touch VB 6 for the reasons Veign mentioned, but I wouldn't count out VB.net.
Python is a good language for a beginner. They teach it to kids in schools here. It is also possible to create GUI's for python apps. There are a number of frameworks available to do that. The only real problem with it is if he wants to share those apps. People will need to have python installed to run them, and this isn't something that comes with Windows (although it does come preinstalled (hidden) on some HP pc's).
Oh, one of the things not mentioned by anybody that is very important for a beginner that is self-learning, is having a mentor (or 2). Someone that knows what they are doing in the language you have decided to learn. Someone you can turn to when you get stuck and need a bit of help understanding. This person also has to be someone you can understand. Not everyone is cut out to be a mentor, even if they are an expert coder in their language. Some people have a style of explaining things that just confuse more than actually help. This is why there is a plethora of bad programming books in stores that were written by 'experts' that nobody can understand.
The availability of a good mentor in the language you have chosen can be an important factor in how far you will get with that language and whether you end up giving up or not. I almost gave up Delphi because of the lack of experienced Delphi programmers that could serve as a mentor for me. I had one, but she was unreachable for long stretches of time (I haven't heard from her in almost a year now). It wasn't till I started hanging out on IRC that I found more Delphi programmers. If I had been able to grasp C++ at all in the beginning, I would have had many more people that could have served as mentors. Without a real teacher to guide you along in learning your first language, you will need people to help you over the occasional hurdles, otherwise those hurdles can grow into very high solid brick walls.
If he wants to be a hobby programmer, anything he enjoys would be fine to learn. If he wants to make money, then he has to decide if he plans on working for a company or doing it on his own.
If he wants to work for a company, C# should be his target at this current point in time, and definitely database stuff, as that is where the big demand is.
If he plans on working for himself, I would suggest C++ Builder, Delphi, or C#. He won't need a whole team of programmers working with him, or a few years to turn out v1.0 of a fairly decent sized application.
What he really should be thinking about is where does he want to be, where is he going, what is his final goal. Then look for the best way to get there.
He might end up deciding AHK would be best for accomplishing his goals. His goal might be to be the next Skrommel. You never know.