Mal noch ein par Worte zu DirectX vs OpenGL.

OpenGL hat natürlich den Vorteil, daß du damit plattformunabhängig bist, der Nachteil ist, daß die Standardunterstützung von OpenGL unter Windows ein wenig eingeschränkt ist. Sofern die Nutzer also nicht aktuelle Grafikkartentreiber nutzen kannst du nicht alle Features von OpenGL nutzen. Ob man jetzt als Hobbyentwickler aber unbedingt Shader X.0 braucht ist eh eine Frage für sich.

Wenn du dich für DirectX entscheidest, triffst du damit eine Entscheidung für Windows und gegen andere Plattformen. Über Wine/Cedega ist vielleicht unter Linux ein wenig möglich, aber OSX fällt damit schonmal so ziemlich raus.

Gerade wenn du erst einmal nur 2D machen willst, ist die SDL eigentlich die perfekte Wahl. Sie bietet alles was man für ein 2D-Spiel benötigt ist sehr verbreitet und unter einen sehr angenehmen Lizenz zu haben. Ausserdem funktioniert sie problemlos unter sehr vielen Plattformen. Damit hälst du dir für später sicher die meisten Optionen offen.
Wenn du dann später auch 3D machen willst kannst du direkt OpenGL mit der SDL nutzen oder später immer noch auf DirectX umsteigen. Alternativ würde ich persönlich aber, wenn ich ein 3D-Spiel plane, sowieso eine vorgefertigte Open Source 3D-Engine ala Irrlicht nehmen, die sowohl auf Basis von OpenGL als auch auf Basis von DirectX laufen können.

Über .NET und Mono kann ich wenig sagen. Als OSX-Nutzer kann ich aber sagen: Wenn du Software für OSX mittels .NET schreibst hast du dafür sorge zu tragen, daß das bei mir läuft. Ich, und damit wohl auch der typische OSX-Nutzer, ist nicht bereit dafür noch speziell extrakram (Mono) zu installieren.