A few things stand out:
1) You're an introvert, in a world that worships extroversion. There are places where we fit well, but it can be hard to see them. Your ability to work alone will serve as your greatest strength in certain fields. The hardest obstacle you will face is learning how to ask for help.
2) You're lazy. To be fair, laziness is one of the qualities of a good programmer, as long as you're capable enough to find the easiest way to solve a problem. Embracing this quality means learning to automate the repetitive tasks you find yourself doing. DF macros, for example.
3) You sound depressed. This might simply be a result of circumstances, in which case starting to earn your keep will improve your self-confidence dramatically. On the other hand, being unmotivated to do anything is a first sign of clinical depression, which is better treated by a psychiatrist.
4) You're having trouble developing marketable skills. You enjoy video games and are interested in programming; have you tried writing your own game? Doing a project will develop skills far faster than any study program. Likewise, installing
LFS will teach you more about computers than you might have wanted to know. Fixing bugs and annoyances in open-source programs will both build and demonstrate your skill.
5) You're having trouble finding a job you're willing to accept. Without a good network, they don't just fall into your lap. For my first full-time job, I had to contact a recruiting agency. It helped that I was in a position to work for peanuts until they saw that I was competent enough to promote. I seem to recall having visited an unemployment agency for help on my resume, too.
The good news is that life really does get better once you truly get started on your own. Not perfect, but better. The most important thing is to find a core competency on which you can build self-esteem.