If you were to write an GUI application that runs locally and calls a webservice, to be cross platform, can you do it with .Net, what tools would you recommend?
I was considering Java as it would be relatively easy to pick up due to its C# similarity and then I could use the JVM.
You should get familiar with the Mono project and MonoDevelop; the express purpose of those projects is to allow building and running .NET code on a variety of platforms, including Windows, Linux, and Mac OSX.
Since the Mono is a re-implementation of .NET, it always lags a little behind Microsoft.NET, but they’ve got good coverage of .NET 2.0 and some .NET 3.x features. Note that Mono executes .NET binaries, so as long as your program features are supported by Mono, you can take an application EXE you complied on Windows and run it on Linux/Mono without recompiling.