There's a few possibilities here:
1. The guy was an over-achiever who was motivated and worked really hard but just didn't have the experience, intelligence and/or talent to deliver at the level he was at.
2. The guy was a bullshitter who got the job because he knew all the right words to say or had connections. However he's lazy and isn't attempting to deliver. He just thinks he can take abuse, give the perfect responses and get a paycheck while being a liability until he moves on to his next job.
3. The guy was a normal dude but something devastating recently happened (death, divorce, drugs, lost all his bitcoins on mtgox, just watched the season finale of Lost etc).
From what you've said it's #2.
I've seen this before where as soon as someone thinks they have an opportunity coming soon (in this case whatever painting shit he has in the pipe) they get this incredible mental defense against abuse. If you're thinking, "Whatever you say doesn't matter, I'm quitting soon and this is just a paycheck to me." there's nothing they won't say 'sorry sir I'll do better next time.' because in their mind you're just a pawn in their game.
In addition, a good bullshitter sees the failure->abuse->recovery cycle as part of the game. If it's easier for a bullshitter to manipulate people around him to keep his job than it is to work hard and earn the respect of his peers then maybe he'll do that.
The worst thing you can do, for yourself, your team and the person in question is to let him fuck around and just mitigate the liability he presents.
The second worst thing you can do is to get rid of him without telling him exactly why you're getting rid of him. If you say shit like, "Oh you're not what we're looking for" there's no chance for introspection on his part to realize that he needs to step it up.
The best thing you can do is to fire him and give him constructive criticism as to why you're firing him. This accomplishes your job as supervisor while still helping him in the long run.
What you did is close to the best thing you can do, but depending on what you actually said it seems that you lacked the willpower to focus your anger into something constructive for him. That doesn't make you a shitty human being, it makes you a human who is still learning to manage shitty workers.
If it was actually #1 or #3 it's a totally different ballgame and your fault is making the wrong judgement rather than handling that judgement.