Use a tight deadline to force yourself to finish
Without a deadline, a small project can drift on forever, with one more feature, one more improvement, one more polish pass always waiting just out of reach. A tight deadline, even one you set for yourself with nothing riding on it, changes that completely.
I give myself these kinds of deadlines constantly, and the projects I actually finish are almost always the ones I boxed in this way. Pair the deadline with a tiny scope and you get a project you're almost forced to finish, because there's no room left to add more before time runs out. That combination — small scope, short window — is one of the most reliable ways to actually ship something instead of tinkering with it forever.
Try this today: pick a project you've been slowly working on with no end in sight, and give yourself a short, specific window to finish a rough version of it. Cut anything that doesn't fit in that window. Ship whatever you have when the time is up, even if it's rough.