To be honest I've never been a huge fan of wearing cosmetic items on classes that your team has multiples of, since it only serves to make you more identifiable to enemies. When someone yells out "soldier is low" and I'm looking at a soldier, there's only a 50/50 shot that the guy I'm looking at is the target being called. However, if someone calls "pothead soldier low," I can know with certainty whether I'm targeting the right guy. Also, if one scout ducks behind a corner and another one pops out a second later, there's no way to know whether there's one or two scouts behind that corner if they're identical. Ideally, both scouts and soldiers should be identical, and unless both were lucky enough to get the same hat, that means going hatless. I'm glad to have my soldier stash. I don't usually wear it, but if I'm playing with a soldier who does, it's nice for the sake of uniformity. (My other hat is the pickelhaube, which I can wear guilt free.)
In CS, you also had your choice of four different models, all functionally identical but cosmetically different, and teams would always choose the same model. Then people started using a specific model because it was thinner than the rest and you could get closer to corners without your model poking out. I wonder if people will stop using certain hats if/when they are discovered to be tactically inferior. The halo definitely seems to be a poor choice of hat as it makes you a more visible target in dark areas, especially against opposing snipers.