All in all, this isn't the real problem. Really, there is no problem. I've been doing find abstracting the details when I need to. It's definitely a fun exercise in software design. However, I stepped back and asked myself what the true audience is for the articles that I will be writing, and for Managed World in general.
Well, the audience I'm targeting is Managed DirectX developers. So, in that case, I don't think it is a problem if I expect the users to be using DirectX. I don't want to make it too complicated, unnecessarily. So, time to pull out the abstractions tonight and get a straight forward, DirectX-specific, engine running.
The good part is that I can simply tag this source release in source control and then go to town chopping stuff out. If I find myself up poopy creek, I can simply check out the tagged release and consider myself good again.