One thing I've learned from having to do rapid prototype development is to just put fingers to keyboard and go.
If I find myself getting stuck in the cycle of "this can be written better, I'll just spend 2 hours improving it rather than finishing the framework" I stop, I think about it, then I leave the working-but-probably-crap code in place and move on.
Once the framework is in place, then I start making things better, one area at a time.