Not only viable, but really good, in my experience. I've developed several MMO servers using C#, and I must say I never regretted the choice of language and platform.
There are lots of great libraries and tools for C# and .NET in general - network, logging, O/R mapping, etc. And, compared to Java C# is more expressive and less verbose (some people might argue about this, though..)
The GC "overhead" that scares some people is not really an issue, unless you happen to abuse it with billions of allocations per second. As an example, our current server allocates up to 50 mb/second under heavy load, and GC does not introduce any noticeable lag. We did have to use object pooling in strategic places, though - most importantly, objects representing network packets are pooled and not garbage-collected. Still, even with pooling turned off, GC is not the biggest problem.
As an example of how cool C# is, this is what we recently implemented. Our server runs several WCF services, that the game client uses for non-time-critical tasks, and we also use them for server administration. It turns out, it's very easy to make a WCF service to simply return our game objects to the caller. So we did just that, then made a little plugin to LINQPad that connects to our server - and now we can run queries like
from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }
On a live server, no less! I don't think you can do this with any other platform. Not in couple day's work, at least.