I don't know if this question is strictly related to software development, but still I'll give it a try:

Like a lot of programmers, I love to work on hobby projects. Sometimes, seemingly good ideas turn out to be not so good, so I drop the project. But sometimes, something useful comes out of the project. So, I could release it, present it to the world, right?

Wrong. Somehow, I don't seem to be able to make this step. I fear that my code is not good enough, I can always think of things which are suboptimal, of features which could be added. So, I don't release anything, I lose interest, and at one point abandon the project.

Is this normal? How do you overcome such a situation?

First of all, remember: shipping is a feature. It's better to release something imperfect than to release nothing at all.

The other thing to note is that these are Hobby projects.  If you don't meet deadlines or lose interest it's not a big deal. You're doing the project for fun after all. 
