It seems to me, looking at software history, that the languages that really take off in the industry are those that have found a niche in something that industry really values. In the 1990s, Java became a hot platform, because it provided an extra layer of encapsulation, and more opportunities for abstraction, looked like C++, but didn't have the memory leak and system-crashing issues that C++ had, and it was internet-ready, which few other languages were at the time, and it was hyped heavily by Sun. C++ became popular in the 90s as well (though not nearly as popular as VB), first because Microsoft promoted it for desktop apps., and COM, and system development, and for some of the same structural reasons as Java, but it had the advantage of being faster. C++ had a niche on Windows, because you could do some things in it that you could not do in VB. It was used for web app. development in the late 90s, in combination with Perl. C became popular in the early 90s because it offered productivity over assembly language, with a similar level of power, while still being faster than other languages. Plus, it became the de facto standard language for system development, I think because of Unix.
The thing about .Net, at least I think this is still the case, is it's difficult for any language to gain an advantage. Each one has its plus points, but I don't think you get a speed advantage with using any of them, since they all compile down to the same bytecode (the same could be said for the languages written in Java). There can be productivity advantages, I think, with more succinct expression, and more powerful structures and operations being at the disposal of the programmer. The only .Net language I've seen that uniquely gives you more power is Managed C++, because of its ability to seamlessly integrate native code, but from what I saw several years ago, hardly anyone was using it.
I haven't looked at IronRuby, or F#. I've read up on F# a little. What I remember from the time when I developed for .Net was that there were times when I wished I could've done a piece of an app. in, say, a functional language, where I could transition out of C# and into Lisp, for example, just for a small piece of it, because I thought there were some problems that it could uniquely solve more productively than doing it in C#.
The mentality of the development community has a lot to do with acceptance. In the Java community I think there is more of a sense of choosing something for its technical merit, and they're not afraid of learning sophisticated computing concepts to access the advantages of the technology, though a lot of consideration is given to industry support, in terms of libraries/frameworks. In the .Net community, it seems to me there's a lot of emphasis on "ease of use," both in terms of the language being easy to understand, and in terms of the available functionality and documentation for it. I just remember that when the first version of .Net came out, it was pretty easy to see that C# was going to win out over VB. Microsoft was mentioning it a lot. All of the early documentation and example code they were putting out was in C#. VB developers were having a fit with Microsoft over how they designed VB.Net. I think that's settled down from the design perspective, but I don't know if the popularity rates have evened out, or gone back to the "old norm" of VB being the most popular.
I think the only thing that would grab developer interest for these languages on the .Net platform is if there was something like Ruby on Rails for them, by which I mean there's some "killer API" that only runs on that language, and which significantly boosts developer productivity without sacrificing application speed by much. Another barrier is developer understanding, by which I mean understanding the power of OO and FP. This can be a barrier to accessing the language in which these more powerful APIs might be built, in addition to just making something in a way that makes the transition to these languages worthwhile.
Microsoft has had a history of putting greater power into its software and tools without guiding their users into first noticing that it exists, and then showing how people can use those features in powerful ways, making the effort to put them there largely moot. If they'd bother to offer a little sophisticated CS education in a way that developers could understand (which I think they could do. I think Microsoft has the communication skills for it), then maybe more developers would get interested.
Edit: I took out a comment about "support from Microsoft" for these languages, in light of Justin's comment on this.