I've thought about it, and I'm now in the process of creating a design/layout document.

This is my soulution:

The engine .dll will act as a server. It may only do stuff/send data if it gets a request. If it gets a request, it will follow it, then it'll send a repond to the "client" (which is the game dll).

The gameloop, and basically everything game related will be resident in the game dll, and the executable will simply initialize the two dll's.
The engine will contain all window procs, as well as all the loaders in addition to what "an engine should include" (world renderer, collision, text output etc.)

I have no idea if this is a good soulution, but I thought I'd try it out.


EDIT: Found a series of articles dealing with therory around 3d engine creation: Only took me about 3 days of searching gamedev.net ops:

http://gamedev.net/reference/articles/article1947.asp
http://gamedev.net/reference/articles/article1954.asp
http://gamedev.net/reference/articles/article1959.asp
http://gamedev.net/reference/articles/article1973.asp
http://gamedev.net/reference/articles/article2011.asp