Having spent a lot of time in software companies, I'm familiar with a concept called "time boxing" to help prevent software development projects from going on forever. I didn't realize I have been using a sort of "time box" approach in my personal projects, until I read Dave Cheong's write-up about doing just that.
Dave's description of how to use time boxing in the context of Getting Things Done (GTD) is excellent in two ways. One, it is a good articulation of what "time boxing" means. Two, Dave does a phenomenal job of explaining how to use time boxing to increase your focus, prevent time-consuming rat holes, and take better control of your day.
I've found this approach to be very useful to help me box in things that take on a life of their own - like online research. I can get lost in the internet if I'm not careful.. By turning my research into a closed-ended activity, time boxing helps me focus on what I really need to learn and cuts me off at a predetermined time.
If you combine this with a timer of some kind (either on your computer, or a kitchen timer on your desk) you can increase the likelihood of getting your own personal projects done on time and under budget.