Another vote for go to college.

I'm a senior in Computer Science at the University of Illinois, graduating this May, and a TA for our Data Structures course (as a disclaimer of potential bias).

I've been programming in some sense since I was 10 or 11. I didn't get very far until high school, during which I dabbled in several things and made some neat programs. However, the amount I've improved as a programmer over the last four years is disproportionately more than the preceding 4 in high school, and not only because of time spent.

Here's why I believe college is still valuable for programming:

1. As my father says, "college teaches you things faster than your natural curiosity leads you". Though this explains why classes can be painful, it also means that in four years of college, you learn a lot more than you would in four years of self-driven learning.

2. Interesting programming problems require theoretical knowledge to solve. Not necessarily "cstheory.stackexchange.com" theory, but theory in whatever domain the problem is in (i.e., Software Engineering theory).

3. College puts you in a group of peers who are also learning the same things. These friends are great resources to help you learn more.

4. College gives you immediate, external motivations to learn: programming assignments, grades, peers, the occasional programming competition limited to others at a similar level (so you actually have a chance of winning), etc.

A couple other thoughts on your points:

1. Computer Science is a fine degree to have. If your college offers both CS and Software Engineering, you can of course enroll in either and transfer if you feel you made the wrong choice. But more importantly, don't discount a college because it only offers "Computer Science". As far as I know (and I read a decent amount of CS Education material), the two degrees are fairly similar in terms of content. Good employers certainly don't discriminate there. (UIUC offers two senior level courses called "Software Engineering", and a 200-level course focussed on it.) Also, the "computer science" part of the discipline tends to be the more theoretical and mathematically challenging side. This is the stuff you won't pick up on the job. The "software engineering" side of things, you'll pick up on the job. So focusing on the computer science part during college is probably not a bad idea (although most programs you can learn a good deal of both).

2. Get internships. You can make about $10k a summer after taxes with internships (although getting a good one after freshman year can be hard). This can lower the cost some. Also remember that college is an investment. A good student from a good CS school can reasonably get a job paying $80k/year out of college (rates vary significantly by location and company, of course). Paying back your student loans shouldn't be too difficult. I also have a friend who took a semester off to continue his internship. Doing a bit longer "co-op" such as this can also help with finances.

3. If you really enjoy software development now, you'll probably enjoy studying computer science in college. There are parts of college that suck, but overall I've loved it.

4. Based on the very little I know of you, (posting on HN, thinking about your future, analyzing costs/benefits), you seem like you wouldn't be satisfied at a low-quality programming job. Any company that would hire you out of high school without a lot of programming experience (no offense intended, that described me as well), is not a company you will want to work for a long time. You might not be doing very interesting things, or be working with highly skilled co-workers. You get both of those during college, and immediately afterwards.