The problem is that when you "hack" or work on side projects you dont associate it with money or as a real job. You have to make sure that you realize that your time is valuable, opportunity cost. Every project that you work on you must make sure to work as efficiently as possible.
Before every app I build. I do a few things:
1. Quick wire frame - so i dont go off on a tangent 2. Amount of time I think it will take me to finish (be strict) 3. What happens if I fail.
Stick to these rules and you'll get things done faster and a more organized manner.