It sounds like what you're looking for is experience with different frameworks and APIs, and the languages are just a mean to that end. What you probably really want to learn, though, is design patterns, best practices, etc.
For web programming, you generally need to learn to write stateless code. I'm sure there are frameworks that will persist session data, etc. but doing that is a dangerous game.
For writing GUIs you probably really want to learn the
MVC pattern of interface design. Gunning for GUIs for Windows apps specifically might not be the best approach. It will certainly give you latitude in a job search, but on any particular platform you're going to have to learn the API for whatever windowing/display system is in use. I.e. Java swing, QT, Windows Forms (for .NET), Cocoa/Interface Builder on OS X/iPhone/iPad, etc. So i feel like your real goal should be figuring out MVC, and knowing how to apply it in any of these systems. Then when you need to use another one, you just have to read the API documents to figure out how to, for example, display a button and respond when it's clicked. Knowing that by heart is not helpful. It is a waste of brain space. Knowing how to readily apply a design pattern is much more valuable, as it is reusable different places.
I guess I strive to be the guy that can program what you need, not the guy who "really knows .NET forms" or who can "debug fortran like nobody's business" (one of those is true, I am sad about which). That way if a new project gets started, you can dive right in and get comfortable the quickest, giving you a head start on those that are set in their ways. If someone needs a linux or OS X client, and someone says "I only write windows code. If i can't use Visual Studio, I won't do it", they look way worse than the person who says "I haven't done it before, but I'll see if we can have a prototype in a week or two to see if this is feasible".
I did not learn to program in college. Not at all. I have a CS degree. I wrote, perhaps, 2 large programs in school. No one showed me how to use a debugger. No one taught me to write reusable code. The professors assumed if you didn't know how to write Java, you'd learn when they gave you a project that had to be done in Java. There were projects where they said "Have at it, whatever language you want, check with a TA to make sure they have the tools to compile and run it before you turn it in". When i started working, i had to start learning from scratch. C, Fortran, JavaScript, HTML/CSS, Perl, shell, SQL, all from essentially ground zero. I had written a little C, but not good C. I just had to buckle down and learn them. But, again, I think most jobs expect there to be a break-in/training period. As long as you can get comfortable in a reasonable amount of time, you not knowing language X or API Y should not be an impediment to you getting a job. Yes, having something specific on your resume might get you in the door, but if you get an interview hopefully you can express your talents agnostic of knowledge of a particular language.
I'd say, learn to write some plain C and read it. Learn to write some Java or C# or other modern higher level language (Objective-C). Learn to write some functional code. You don't need to be a master, but exercise the parts of your brain you need to learn. That was what I took away from school more than anything else, was how to learn. The programming knowledge was inadequate, the theory was important but not always immediately pertinent, but problem solving and how to learn are what I value the most.
It sounds reasonable to want to have some experience in different areas, but don't spread yourself too thin. Don't put something on your resume that you don't want to answer questions about. Be honest about your experience. i think i broke languages down like:
Strong in: xxxx
Familiar with: yyyyy
Experience with: zzzz
If someone asked some hardcore question about something in the zzzz list, i would be able to honestly say that I haven't worked with that area, etc. and explain what the breadth of my experience with that technology was. I was prepared to answer/write/read/etc. things in the xxxx list, and could have done decently with things in the yyyyy list.
Again, good luck. Keep your expectations on an even keel, and persist through the frustration. In any serious endeavor there is sure to be incredibly frustrating problems, so best to prepare in advance.
-Lee