My sprite engine is coming a long way, after a few months and many refactorings. After reading the book "Game Coding Complete, 2nd Edition." I decided to organize my engine like how the book recommends, which, incidentally is how the Microsoft Foundation Class is structured. Don't let that turn you off though, it's actually really cool.
There are three layers: the application layer, the view layer, and the logic layer. The application layer controls platform specific and engine global stuff, like file saving and loading, memory management, error logging, video surfaces, etc. The view layer controls input and output, lile the GUI, and the sound engine. The logic layer is where game calculations take place. Collision, physics, AI, and the process and state managers.
I'm spending most of my time right now getting the application layer up and working. When I'm done I'll update with all that I did.