I'm primarily self-taught, and at the age of 21 I'm comfortable listing 8+ years of C/C++ development on my resume. I built my first web site when I was 11, and I started learning C when I was 13 so that I could add features to a multiplayer text-based game (MUD).
I spent a few years running a MUD, doing some coding competitions, taking on small freelance projects, and learning about data structures, networking, graphics, and other things. When I was 15 I created a full Win32-based 2D game engine for a school project. It even had a terribly designed scripting language for defining levels and game behavior. After that project I vowed to never touch Win32 development again.
When I was 16 they allowed me to take CS courses at our local university, and I thought I'd found my home. Unfortunately I realized most college students at our university don't really care about programming and are just there for the degree. We had no hacker culture, and I tutored several seniors who couldn't fix their own syntax errors.
I've been happily employed since I was 16. I've done freelance, small projects at our university, computer technician work, and embedded systems software development. When I was 19 I got recruited by Lockheed Martin to write flight control software for the FAA for a summer. It was amazing, but I didn't want to work at a big company in the long run, so I turned down the offer to return.
Last March I dropped my job and began working on my startup full time :) I should also note that I'm in college part-time as a CS/Economics double major.
I have to admit that most epic programmers I know didn't get a formal education in CS. Some have degrees in other fields, and some have no degree at all. I think passion for software and building things takes people further than a degree. However, most of the programmers I've worked with that had CS degrees did quality work and had a good understanding of CS concepts. They just rarely seem to be coding demons.