This seems more about you and your feelings than any kind of tangible punishment for your son. You say you want to "feel good" about giving him presents - reading between the lines that means you feel so badly towards him at the moment that you don't want to do anything nice for him. Three year olds are extremely challenging (I know, I'm onto my second one now) but cancelling his birthday seems an extreme reaction to me. Just how bad was the bad bahaviour? At not even 3 he is still challenging his boundaries and finding his limits; he has little or no concept of what is the right or morally correct way to behave, he's still at the "me, me, me" stage.
To hold onto anger towards him for such a long time seems very unhealthy to me - OK, you have a bad day with a toddler, you can punish there and then with time out, taking away a toy for a while, whatever suits you, but to drag out a punishment over such a long time worries me a lot. And, as others have said - if he doesn't know his birthday is cancelled, then what kind of disincentive is that for future bad behaviour?
You sound like you have got into a vicious circle where you can't find much to like about your ds - have you spoken to your GP about how you feel? Maybe I am over-reacting but it sounds like this is an indication of an underlying problem.