The increasing complexity of the .net framework and .net development tools steadily increases the barrier to market entry for software developers. Other disincentives: a lack of platform portability, a neglected JIT optimizer, quick obsolescence of knowledge as new libraries are continuously churned out. C++ and Java JIT optimizers should not be faster than .net, and the .net framework doesn't need to be such a monster.
Speaking as a former unix developer, I originally switched to .net when it was released in order to spend less time debugging heap corruption and other low-level C++ problems. I thought .net would steadily increase in efficiency and simplicity, for example by providing an equivalent to the STL. At this point .net doesn't have many advantages, except operating system market share.