I think we're a little way before that time yet, surely. I mean as far as the existing userbase goes.
There is no such thing as an "existing userbase". It's a myth. PC users are not (even marginally) homogeneous. About two years ago I bought an entry level POS Dell laptop. Even it has a Dual Core processor. I don't know who you think is going to be playing a very complex game, using advanced rendering techniques for special effects, and advanced AI, who doesn't at the very least have a computer better than an Inspiron 6400.More to the point if we're dealing with the kind of complexity John is talking about it would be quite favorable of us to chose a language/platform combination, that's very scalable. Now C++ (as source code) is very scalable, as it runs on everything from the chip embedded in your washing machine, to Blue Gene supercomputers.
However a C++ compiled binary, is not nearly as scalable. Want proof? Easy. Go and dig out an old PC game. I chose MechCommander 2. I remember it ran pretty good on my computer way back then. Today I have a PC with 10 times the performance. My Riva TNT 2 is replaced by a Radeon X1650XT, my PIII 500 is replaced by a P4 3600, I have 4 GB of RAM, rather than 500 MB, I can't even guess how much more HD space I have, and the OS is now XP, rather than Windows 2000. Guess what? The game runs worse today, than it did back then.
With C++ you need to pick your target, and stick with it, come hell or high water. With .Net (or other JIT compiled languages) your performance will scale more linearly, as the target moves.
Now I'm not directly saying that one is better than the other, but depending on your time-to-market, and reliance on 3rd party software, there could be a significant paradigm shift during development. Case in point: Duke Nuke'em Forever. With C++ you really need to be ahead of the curve, with C# you can pace yourself, knowing that the busy folks at Microsoft will be doing all the catching up for you.