I stripped out the game components I had in (map system, characters, items, etc) and redesigned them and have started recoding them.
I just got done with my new Sprite class. It's not actually a game component, but almost every visible item in the game will use it. It's also a lot faster than what I was using before. Before I was getting about 160 fps with 20 shadowed and lit objects on screen. Now I'm getting about 100 fps with 20 multi-layered, shadowed, and lit objects (each layer is shadowed and lit itself as well.) Here's a screenshot:
Each object is made up of 3 different layers (the face and hands, the armor, and then the orange armor with spikes.) The shadows are made up of 3 layers as well.
Getting everything else recoded will be easy because the rest of it was fast enough, it just wasn't designed right. I should still make my June 1st demo deadline.
It runs at about 10fps at 1680x1050 (fullscreen) with 300 objects on screen.