heardtheword
I'm also guessing you edited your post several times (or maybe that's just me) just to make sure it was perfect, right? So you've figured out how to "ship" your words, now you just have to figure out how to do that with projects. ;)
Find somewhere you can teach and receive feedback. I teach piano to students and several times I've been caught with a question I had to look up. The best thing you can do is say "I don't know but I'll figure it out for you". Plus, this way you also have to figure out a way to explain it in a simple method to those you are teaching.
Feedback is really important because it will be how you can affirm what you know and also give you opportunities to branch out. If you aren't getting feedback on a blog, forum, or wherever you may just need to find the right place to share your knowledge.
Shipping a complete project is perhaps one of the best ways that helped me get past the "It has to be perfect" thought. In my case it was doing a few ludum dare competitions and forcing myself to submit whatever I finished after the weekend was over. After a few times of doing that it got a little easier to forgive some of the atrocious code I had written. Coding Horror has a good post on this, http://blog.codinghorror.com/version-1-sucks-but-ship-it-any....
Another thing for me was getting involved in open source projects and maintaining my own. The first project I open sourced was a port so once it was in working condition I made it available for others to use. That lead to other projects that I could finally finish even though they weren't "perfect".
I wish you the best and hope you can find a way to cope with it.