As has been said already, having a marketable skill set is the key. Beyond that, networking is huge; it's much easier to get a job if you have connections (as opposed to being just a random name and resume).
If you can't afford college or vocational school, you can still work to develop your skill set on your own. Self-study takes longer and requires dedication, but it is a viable alternative for many industries. That said, if you don't have some kind of certification or degree, you'll have to work harder to prove your skill. This is where networking and building a portfolio come in.
It also helps to develop unique combinations of skills. Take programming, for example. There are a lot of programmers out there, so it may come down to programming PLUS another skill.
In my case, I was able to get a job at a software company in Korea without having a degree. It was not easy, and it took a lot of time, but it came down to good networking, building a strong skill set, being able to confidently demonstrate those skills, and having a relatively unique combination of skills (experience with linguistics, internationalization, graphics programming, and a moderate degree of Korean language ability).
Building skills beyond your core set (programming, in my case) is important. Not all of my additional areas of study have been useful in the workplace, but having a core skill plus a broad range of minor skills increases your chances of fitting niche jobs.
If you don't have a broad skill set, continuing your current job or settling for a low-end job while continuing to work actively to build your skill set is not a bad thing. The trick is actually pushing yourself to keep developing your skill set, even if you have a moderately satisfactory position.