Are there any good, portable, open-source, high-level, statically-typed, imperative, object-oriented, garbage collected, safe languages/runtimes with reasonable performance besides Mono and Java? Mono is nice, but it is a Microsoft technology, and I'm kind of afraid of using it (I'm not sure how rational this fear is). The problem with Java is that it is just too simple (no unsigned data types, no structs, etc.).
Mono isn't a Microsoft technology. .NET is, but Mono isn't - Mono is an open-source implementation of the ECMA-334 and ECMA-335 international standards. Yes, they originated from Microsoft, but Mono itself is not Microsoft technology.
Not that Mono is a language, of course - C# is the language. But then languages aren't really open-source or not - implementations are.
It does sound like you've probably got an irrational fear of C# - and likewise of Java. There are certainly things I'd like to see in Java (and I significantly prefer C#), but it's still perfectly possible to write very significant applications in it.
On the CLR, there is Boo.
Boo is a new object oriented statically typed programming language for the Common Language Infrastructure with a python inspired syntax and a special focus on language and compiler extensibility
The Boo Manifesto is a good starting point.
C++ with a garbage collector? Though you issues with Java are not all that much of a show stopper (unless you can detail why you need those things, on the face of it those arguments are usually not very sound, but sometimes they are).
First of all, Mono is not Microsoft technology. At second, there are only two serious Virtual Machines (VM) with mentioned features - .Net/Mono and Java. But, setting aside requirement of statically-typed language, you can draw an attention at newcoming Parrot Virtual Machine (Wikipedia article about Parrot).
And, of course, Ruby, Python Erlang, etc. are also crossplatform VM (for single dynamic language)
How can you say that java is too simple?
Ok, one of the reasons for developing Java is to make it less complicated than C++ which has a 900+ page of specification. However, it's much more complicated than C.
About 10 years ago I attended a course by Les Hatton and he did research on making your C program safer to use. He argued that almost no-one could remember the 140 pages of C standard, so it would be exceptionally hard to understand something like C++.
Of course, your target may not require safety, but if you do it's something to remember.
You may take a look on the D programming language.
But to be honest? I'd suggest to stay away of mono/C#. Why? Many reasons...
Also, for practical puroses take Java or C++.
Java is as good as C# even it is little bit different. C++ is as good as well because 99% of problems of GC are solved using reference counting so...
I'd like to point out Vala, which is a language based on the syntax of C#, but which targets a C compiler (similar to Eiffel) and a lightweight, self-hosted runtime. It lacks garbace collection, though.
If you want to learn this in order to be able to be more suited for a job, I suggest you consider either .NET (if you want to go for a Microsoft platform) or Java (if you want to go for platform independence), and do a lot of coding. Both are very large platforms!
Anything else would be niche languages being used in only a few places, which can be very nice but is unlikely to land you a job anywhere but in those few places.