Tant qu'à aller vers le C# je te conseillerais plutôt le java, les deux langages se ressemblent beaucoup, mais l'avantage que je vois au java c'est sa portabilité.
Pour ce qui est de faire des interfaces graphique, n'ayant jamais codé en java je ne peux pas te donner le nom d'une lib, mais je sais qu'il en existe. Évidemment en C# tu a le form builder (et ce qui vient avec) comme en VB.NET.
Sinon, tu peux essayer le C++ à condition de laisser un peu de côté la "magie" apporté par .NET (pas de garbage collector par exemple). Je trouve que ce langage est excellent pour apprendre la programmation plus en profondeur. Pour les interfaces graphiques, il existe QT qui est excellent. Si tu y va pour le C++ je te conseil d'acheter un livre pour l'apprendre correctement (cherche un peu sur le forum tu trouvera ton bonheur). 