I don't think there are shortcuts to balancing the game, it takes time and experimentation to find the best settings. You can increase the level of difficulty differently depending on how good the player is. The game will correct the difficulty to match the player skill. For example, the more lives he has the faster it gets harder. But I don't really think it is really a good idea, this kind of "mario kart" thing can be very frustrating. Even more in single player game.
Automate level creation
I can think of two differents way to acheive this. In both you keep a variable that correspond to the level of difficulty. You increase it as time passes. You can then create monsters depending on this variable, the number of them and their strengh. I will call this variable
diff for the rest of the answer.
1) Random monster, random position (easier)
Each monster has a time before spawning, which is influenced by
diff. It can be randomized to make it better looking. The position of the monster can just be randrom on the Y axis outside the view. For example, if the time is in ms.
fullTimeBeforeSpawn_monsterA = 200+1000/diff + random_between(-100,100);
diff equals 1 a monster A spawns every 1.2 second and when it is equal to 1000 a monster A spawns every 0.2 second.
They can also have a window of diff where they can be created, for example monster C will not be created if spawn is inferior to 500. That will make the harder monsters arrive has the time passes.
2) Paterns increasing in difficulty (harder)
Another way could be to make patterns. You then randomly choose between the patterns. And just like the monsters, you can make them pickable for certain value of diff.
For example you can decide to have a pattern like on the following image. The red lines spawns a kind of monster and the blue line spawns another kind (They are still created outside the view).
The number of monster will depend on
diff. Their position will be calculated to be at regular interval on the lines.
numberOfEnnemy_blueLine = 3+diff/10 // will never be 0
numberOfEnnemy_redLine = diff*diff/1000 // will increase faster than the blue
// there will be more blue than red at the
// beginning and more red than blue at the end
The dots represent where the enemies are created.
3) Why not both ?
In my opinion it looks better when these two options are used together. It gives the feeling that the main, strong and slow army is marching toward you while there are smaller and faster ennemies that need to be taken care of.
I know you were looking for an easy and fast solution, but in case somebody else is interested I developed my answer a bit further. There are a lot of ways to automate the creation of ennemies. Your system can balance itself if the difficulty is increased differently if the player is good or not but there will always be settings to choose. However, the balance doesn't have to be perfect the player can adapt.