Making hats available year-round, rather than limiting them to Winter Bash, would be a natural and powerful extension of Stack Exchange's gamification systems. This remains true even if hats are disabled for anonymous users and easy to disable for registered users.
Why Would You Suggest This?
The Xbox Live Achievements system was the inspiration for the original Stack Exchange badge system, in 2008. If somebody was viewing your Xbox or Stack profile, they might see that you'd unlocked some rare achievement, and it could inspire them to work towards that themselves.
But let's get real: most users rarely look at each other's profiles. (We have the view count numbers to prove that.) And while your peers might notice when you unlock your first gold badge, after the first few nobody will notice them ticking up. It's still motivating, but it's lost some flair. Video games faced the same problem. In 2008 it may have been cool to have a couple thousand Xbox Live Gamerpoints, but these days of my friends have so many that the numbers don't even register.
Now in 2018, when players accomplish some difficult achievement, they're often also rewarded with a cosmetic reward that's visible in the course of ordinary gameplay. For example, in Fortnite I was just awarded with an umbrella glider for my first win, and I get to show this off to fellow players at the beginning of every game. Hats can serve the same role here on Stack Exchange.
If Shog earns the Socratic badge today, I would never notice. But how could I fail to notice this?
Being able to highlight your accomplishments to your fellow users in the course of regular site use would be a fun incentive.
A key point to consider is who users are interested in showing-off to. I think that most users are most interested in showing off to fellow Stack Exchange users, since they're the ones who would be most most appreciate the accomplishments. For that reason, I think this would remain almost as effective even if it's disabled for unregistered users, so Stack's interface remains as clean as possible to people who wouldn't care. Likewise, an "I Hate Hats!" button should remain available to let disinterested users quickly opt-out.
Step 4: Profit?
I hesitate to include this, because of the general concern about mixing anything financial into the dynamic of the site. However, the site needs to make money somehow, and I think that if done with care, paid cosmetic hats could be added without ill effect. The most important point (which should be obvious but bears repeating) is that paid and awarded hats must be mutually exclusive.
Perhaps we could have a new profile widget which explains how the user's currently-equipped hat was awarded. This would point to a badge for awarded hats, or display a message like "for donating $10 in Spring 2018" for purchased hats.
One potential model would be to have a set of exclusive hats that rotate out every season/three months and are never available again. As the user donates within a season, they unlock cooler hats, perhaps following a $5/$25/$125 progression.
This is not an original idea, and users have accepted it elsewhere. I am currently a moderator on SpeedRun.com. It is a community moderated and community-funded website. Users who donate to keep the site running get to pick a little flair to appear next to their avatar throughout the site. Users don't seem to have any problems with this.