Well. that's story of my life. I call it side effects of being a programmer. Being a coder and having multiple side projects along with work/life balance is very hard. Especially if you have a family and kids, it is nearly impossible. Main reason I believe, at least for myself, dedication and how important for you to finish project. Especially not being under a deadline or a frustrated client on the other side makes you slack more. Some suggestions may help you to move forward.
Why good planning is important? First of all, it will help you to see your progress and prepared for upcoming changes. If you know what to do next, you can allocate your time and effort better and feel accomplished when you complete smaller tasks. I usually use free version of old vsts or azure devOps with agile. I create epics, user stories, tasks etc and log bugs when I come across. So depending on time slots I have, I can pick one that I can finish and focus on that. You can't eat a whole loaf of bread at once, but one bite at a time.
So think about this. Why things move forward at your work or with your side works with other clients? I mean there are plenty other factors like team work, management, etc but you can't apply most of it in your personal projects of course. But to me, they move forward because there is always someone waiting on the other side and you always have a deadline to make other party happy. With your personal project, there is nobody on the other side. So there is no timeline, no deadline, no angry client that didn't get what they asked delivered. You have to be the other person in this case. You almost need to have double identity :) one day sit down and act like you are asking this project to be done by someone else. and group tasks, put deadlines I need this part done and tested by X date. Then next time be the programmer and forget about that is your project but you are hired to do that. You have a client, a plan and a timeline.
This one is addition to previous section. Once you met your deadline, give yourself a treat or pay yourself. As part of planning, budget your project. For instance, just throwing out, say this project is worth $1000. I need 5 months to finish this project ( planning comes in handy in this case ) 2 week sprints makes $100 each sprint. If I finish each sprint on time and finish all tasks, I will pay myself $100 to buy whatever I want, no guilt or nothing. If you can't really pay or income is limited go fishing for one day, or do something that you want to, but don't if you can't and always remind yourself that you won't be able to if you can't finish it on time. This will motivate you. Maybe not as strong as a real client anxiously waiting for your update but at least something.
Similar example. You can't use excuses against your boss or client. Last night I didn't feel like I want to work on your project, so I watched TV instead will get you fired. So do the same to yourself. Don't find excuses to not sit on your project or leave it before you are done with your task.
As much as side projects are usually personal projects, you can share the knowledge and get some help when needed. Think about this, Mark Zuckenberg wrote most of the codebase of initial facebook. It was a great idea, a side project for him. Might have been huge or end up being nothing. But he included his roommates into codebase. And they were able to get it done a lot quicker. Consider open source and get help from community, open up your project to friends and colleagues, they might be interested enough and jump in to help.
Last but not least, know when to quit. This is the hardest one. You need to be aware of yourself and know when to call it off. It is not moving forward, you can't make time, too big project to handle by yourself, there is no help and no time know when to give up. That's better for you then frustration.
That's my two cents on this. I have been in this industry over two decades and I have been in the same boat as you several times. Started several side gigs. Some completed, some still ongoing some already abandoned. So good luck!