How long did it take compilers to correctly implement partial template specialization, which although a bit obscure is also a very powerful and often-necessary tool? GCC had buggy implementations (often resulting in crashes) until 3.3.1, which was five years after the standard. Much of Boost didn't even work on GCC until 3.3.x, and as far as key third-party libraries, Boost is at the top of the pack.
There are actually several C# compilers, some which are open source and cross-platform. Not all of them implement all the proprietary portions of the .NET framework (portions of the framework are not standard C#) but some do. And that "one platform" also happens to be the platform with 90% market share in the personal computer market, so if you're targeting an application for that market, being Windows-only is no big deal at all.One compiler on one piddly little platform. What are you going to do when a customer offers you $100k to port your application to AIX? Hell, even Java would be a better choice.
Obviously C# isn't the best tool for every job, but that doesn't mean it's never the best tool for any job. A hammer is a perfectly useful tool even if it can't drive screws; in fact you'd be foolish to spend your time driving nails with a screwdriver. Different situations are best handled in different programming languages, and C# happens to have a very nice and rather large niche for designing Windows GUI applications. Choose the tool based on the job, not based on your feelings about the tool.