Woah we could write a guide with all these different methods
At the moment, I find myself writing out each new feature (e.g. level generator) as a separate program and nailing that before moving on to the next big part of the game/engine...
Also for all of my ideas I always have a visualization of the final gameplay; I also play through any new ideas in my head before committing them to paper, and then before I start I run through them all as a check.
I suppose the key here is to get as much experience completing projects as possible.