I don't think it is selfish. It was something that he wanted right? That is how you bought it in the first place.
He assumed that he would have to purchase it himself. I doubt he knows that you bought it and he is deliberately trying to cause trouble.
Honestly, if it were me...I would go and wrap it up right now and give it to him with a huge giant kiss. So what if he gets it early? You are giving him something that he obviously wants and it will show him how thoughtful you are and that you pay attention to the things that he likes.
Give him something else for Christmas morning like some chocolates, cookies, a bottle of wine, some beer, etc.
Look him in the eyes and say: 'You DON'T want to buy it. Trust me.'
I wouldn't wait. I'd just return it and get him something different. If he doesn't buy it for himself, you can tell him after Christmas that you had bought it for him, but figured he would get it for himself, so you returned it. This is the reason I think couples should ask each other what they want. Discussion is always good.
You don't really want to call him selfish at Christmas time do you?
If he buys it for himself, don't say a word. Just take it back, buy something else. Keep it simple.
Give him a general hint so he won't buy anything along those lines.
Oh, haha. Poor you. You may have to just tell him if it was pricey. I'm sure he'll just think it was sweet you got it for him. And I don't think anyone here was being selfish; it's not like he knows what he's getting without you telling him, y'know?
Just tell him! That's a pretty big purchase!
Well you were kinda forced into this situation, sadly. >_<