I've been doing freelance development for around 5 years now and have been a network admin for a small municipality for 7 years. All the while I've been involved in open source projects and a few tool building projects that I apply to all of my jobs.
The experience I had in college was bitter. The CS department wasn't teaching anything useful. The only two classes from the dept. that taught me anything were Data Structures and Algorithms. They were unfortunately taught in Java (the school moved from C courses to Java in my second year there). Everything else was knowledge that I had learned on my own prior to college.
I found the pure mathematics courses to be more interesting and useful. Discrete mathematics being the most useful for development. I think the course taught me better ways to approach problems, not just the mathematics itself.
People I've worked with who have degrees seem to have a very focused skillset. They know a lot of theory, but lack a lot of practical knowledge because (I assume) they don't care to educate themselves further. I'm not making a sweeping generalization here, just an observation. There are plenty of college graduates with a ton of practical knowledge.
As mentioned, I don't have a degree, but I think I'm doing OK career/job wise. I can provide for my family and enjoy what I do.
If you don't go to college, get as much experience as you can. Many employers will ask for a four year degree OR equivalent experience. If you want to be a developer, learn other disciplines that tie into development (such as system administration) while you're writing code. In doing so, you'll be less dependent on others to get your job done and you'll be better adjusted to most any position. Understand the foundations of your work. Additionally, learn to speak/write well.
Colleges seem to focus not on learning, but completing the tasks required to obtain a degree. It's mechanical in nature and you only get out of college what you put into it. If you go, be willing to go deeper than the coursework.