Saving a battle in progress is a daunting task and would be virtually impossible without implementing a straight-up RAM dump, a la emulator savestates, and that's a bit beyond my ken at the moment. The problem is an in-progress battle is a veritable soup of objects all with very complicated properties, states, data structures, and pointers flying every which way. Even if I were to get it to work, it'd be a nightmare to test and maintain, and any new feature or minor change to the code could wreck its stability. The fundamental problem is I didn't design the battle system from the start with reliable saving in mind.
The only real solution to this is mid-battle checkpoints. Every 25 waves or so let all the enemies clear out before the next one starts, clearing the battle of all complicated stuff (enemies, projectiles, etc), then save the current defender information (position, targeting info, boost level, health, attack cooldowns, etc). That's much less information and could be recorded and restored from reliably.
So, I'm afraid true mid-battle saving is going to have to wait for the next major engine upgrade, which probably won't happen before a sequel.