There are 3 areas you can address that will each help you complete the project:
1. The project itself
The first thing to do is to pare down your project to the absolute bare minimum that could possibly be useful. Now you've got your real project. Put everything else on a "nice to have" list and forget about it.
Once you've done this (and be really ruthless), estimate the time it will take to do this simpler project. If the time is more than you're likely to find in a year, scrap the whole thing. You'll never finish it, so you're wasting your time.
Who will the project benefit? Just you? Just a few people? Scrap it, and find something else to do.
Right, now you've got a real, lean project that's worth the effort.
2. The task backlog
Generate a prioritised list of tasks that you can complete when you have time to work on them.
You don't need to generate the whole task list all at once - just make sure the highest priority items are broken down into small enough jobs that you can tackle them when you have the opportunity.
One way to do this is to create a list of the main features that your project needs in order to be complete. Put the most important near the top. Estimate the time it will take to do the top couple of things. If the estimates for the feature comes out at more than 2 hours, break the feature down into smaller chunks and revise the backlog. Rinse and repeat.
3. Making time to work on the backlog
Other answers cover this better than I could.