I'll give you my observations as someone who didn't get a degree until after I'd started working nad have now been in the industry since the mid 90s.
My situation was a little different to yours in that in high school I had mixed grades through the first 3 years (high school is 5 years where I'm from) but I turned that around for the last 2 and ended up, if I understand the American system rightly, the equivalent of valedictorian by a pretty large margin, although this was at a regional government high schol so is certainly nothing to brag about. The point I wanted to make was that academically I was capable.
To make a long story short, I didn't do much in university. I just wasn't motivated. I managed to scrape by in first year because it's easy but I crashed and burned the second year and that was that. The university in question was reasonably well regarded but very non-practical for many reasons eg you learnt Pascal the first year but in the second year you were expected to do C on UNIX with the benefit of simply an 8 page handout; there was no C course.
I ended up going to a technical college. I'm not sure if you Americans have an equivalent but let's for argument's sake call it a junior college. Now this was actually a good move on my part (as it turned out) because this place was incredibly practically focused and I learnt some pretty damn solid C/C++/SQL/database skills that held me in good stead for my subsequent career.
After that I started working, first doing tech support for an ISP back when we had to explain to people how to get Winsock working on Windows 3.1. It was a terrible job but also introduced me to the Web and Perl/CGI programming. This was 1995 so pretty early days.
That lasted about 6 months and from then on I got real programming jobs.
Now like you through this period I claimed with some justification that a degree was a waste of time. This argument was bolstered by the fact that the C/C++ code I was producing was typically done at a prodigious rate (in one job it was 500-1000 lines of C code written and tested a day) and the code was robust (in one case I found it was still being used unchanged 6 years later in spite of their being at least 2 major Windows version releases in the interim) so please forgive me if this sounds like I'm blowing sunshine up my... well, you know where. But the simple fact was I could code rings around most graduates I met.
Anyway at the same time my lack of a degree was a hindrance. I didn't get a look-in at some places and I had to struggle to be taken seriously. And this was long before truck drivers read "Teach Yourself Java in 24 hours" and then applied for programming jobs so the signal-to-noise ratio now is no doubt much worse.
Anyway a distance laerning option became available for getting a university degree and I decided to take it. Some of it was useful and some of it was a complete waste of my time. For example the university insisted I do "Introduction to Java" since it was a second year unit in their computing stream even though by this stage I'd been a Java programmer professionally for 2-3 years (I got 99.5% for that course).
In the end I did get a degree and I can tell you: I'm incredibly glad I did. The advantages are:
- Some companies will divide CVs into two piles: those with degrees and those without. The second pile gets filed in the cicular filing cabinet. You can argue the point that this isn't justified but it doesn't change the fact that it does happen so having a degree will give you a wider range of opportunities;
- In IT they don't to care where your degreee is from or the quality of your grades (beyond your first and possibly second job), so you can get a degree from a nothing university and it still has value (more on this in a second);
- A degree (in any profession) is also a demonstration of your persistence. It shows something about you as a person to be able to stick to a degree for 3-4 years and to finish it. In IT the ability to finish what you start is actually of incredible importance;
- It makes working overseas that much easier (something I recommend you do at some point in your career);
- It separates you from the "script kiddies" (more on this in a second too);
- By having to do papers and the like you learn and practice skills that are useful in business, namely the ability to communicate (verbally and written) effectively; and
- A degree opens up the ability to go into graduate programs in large companies (and the government). This can be a great way to start a career.
Now returning to the point of the quality of the university/college you go to and the quality of it's CS/IT program, I just wanted to expand on that a little. I said (and truly beleive) the most value is obtained from whether you have a degree or not rather than the quality of the program (second place) or the quality of the school (third place). That being said, those things still have value.
Firstly, the quality of the school: obviously someone who went to MIT is going to stand out against someone who graduated from the University of Idaho (actually that's just a guess; for all I know that might be a great school). I'm not sure that justifies the $150k+ you drop on an education at MIT however.
Secondly, the quality of the program. The "better" schools/programs will often concentrate on theory and teach you things like discrete mathematics and really theoretical computer science. Now these things have value and transcend whatever the hyped up technologies of the day are. But they can also be taken too far to the point where graduates actually have no useful skills and have to spend their first three years of work learning how to program.
At the other end of the spectrum are those schools that teach you nothing but the practical. If you have a program that teaches you how to solve programs by using the Java collections classes but doesn't teach you how such things actually work then that school has done you a disservice. Once you know the theory using those classes is trivial.
So look into the program. You'll probably find that many state university systems have excellent programs. A friend of mine went to the University of Texas at Austin (where she grew up) and loved it. As she was a Texas resident it was also cheaper than an out-of-state and/or private school. Your state might not have a good option available.
Also if you have not great grades you may have to go to a junior college and then transfer. This can also be useful if you do go to a new state as the 1-2 years there will probably qualify you as resident and then you'll get lower tutition costs. An ex-coworker's wife went to UCLA this way.
Script Kiddies and Cowboys
Particularly prevelant in the Web world are what I call "script kiddies". These are people who typically have no formal education and can throw together a site in PHP, Ruby on Rails or whatever the current fad is. They're also typically quite young (although I've seen people in their 30s do this too) and they tend to be vocal about their chosen technology proselytizing to all and sundry and dismissing any criticism. You see this in certain areas here too.
Often they'll base their opinions on having once written a guestbook application that gets 3 hits a month and then translate those opinions to, say, a transactional clustered application that has 10k+ concurrent users and processes millions of transactions a day.
Now in one respect I like these guys because I could make a living to the end of my days cleaning up their messes. Call them script kiddies, cowboys or just plain hacks. Whatever the case the propensity for them to produce unreliable code that's typically riddled with security problems is well-known and oft-demonstrated.
The danger you face in that getting no education you will end up being lumped with these guys.
This may not hurt you immediately but it will hurt you at some point. I guarantee it. So I would urge you to investigate education options. You have a bit of an advantage in that you have work you can do remotely and that can help to pay the bills. As for staying at home, if you can then great. If not, I'm sure your parents will understand and actually be quite pleased about (you going to college--even junior college).
Junior colleges and state school systems are where you need to look. Just working now is an easy option but one, based almost 20 years post-high school I would urge you to reconsider.