Well, Peter, the main reason is that C ++ is an agnostic of the platform, and C # is not in the true sense, despite Mono (I donβt think you can run Mono C # on most mobile phones, Nintendo DS or Playstation3, for example).
In any case, most of these engines support DirectX and OpenGL and / or visualization software, so they are created from scratch to be agnostic. But, as in any agnostic system, this requires a lot of effort and resources.
Now, from what you say, your C # + DirectX engine, which means that your engine can now work on PCs, Xbox, Zune and some cell phones with a window. To be honest, this is not a bad range of platforms. Therefore, if you are satisfied with this degree of freedom, and you prefer C # to C ++, you can stick to what you have and spend time improving your engine. However, if you want to run your engine on anything other than Microsoft, you will need to make the switch to C / C ++ someday.
In order to understand what I mean, my team engine supports Xbox, PS3, Wii, PSP, PC, and possibly other platforms, so if we take the effort, however, we have 15 full-time engineers working on this is so ... you see that it is a great value. Now, if you want something like this for a free project, and you know C ++, you can try any of many open source engines like Ogre or Irrlicht.