I have two years of a BA in Economics. I started teaching myself programming at 18, the summer before undergrad.
I got an internship at a startup as a 'Biz Dev/Marketing intern' and mostly produced content -- but I did a lot of data-driven blog posts, which got me into their codebase and database at a very slow pace. I started filling in on small programming tasks, like adding Google Analytics event tracking to a button.
I kept creeping away from Marketing and toward Code. After six months I was 100% a 'programming intern.' I was still a beginner, but I was providing real value. Four months after that my boss said, 'If you want to work here full time, you can.'
Two weeks later I was bored in class and dropped out to take him up on it.
After that, smooth sailing. Once you have one job as a software engineer, people don't pay much attention to the education section of your resume. Your perceived quality is based almost entirely on past projects -- open source work and employment history.
During interviews, employers will be more skeptical of your fundamentals than they would be with a CS grad, and they will push harder. Even though everyone admits 'implement a sort function' isn't real-world work, they ask it because they want to know you understand O Notation and can think about performance -- most self-taught programmers don't.
I've only been rejected by one company. During that coding interview I admitted I had no idea how to write a proper sort function and had almost no knowledge of Big O. They said they were 'looking for someone more senior' -- and they were right.
I found my first internship through HN's 'Who's Hiring' thread. Those startups are the right targets: they hire on demonstrated ability, not credentials.