I actually frequently wear an overcoat in winter, because I have to wear a suit for work. Here's the trick to not looking like an asshole:
-Wool. Always wool. It's classic, it works, and you don't need to fuck with it. Go for black or charcoal, you shouldn't be wearing anything else in winter anyways, and it doesn't clash with the dark suits you should be wearing in winter. You're going to see leather, it's going to look beautiful on the rack, and I promise you, you are not one of the 4 people on earth who can pull that look off.
-Skip the hat. It doesn't work and never will. If you could pull off the overcoat and hat thing, you wouldn't be asking and would probably be European. If you go with any kind of a fedora, you're going to look like a NEET. If you go with a skully, you're going to look like a Russian hitman. Just don't. I might recommend a nice cashmere scarf instead to keep warm, but keep it a solid (no patterns) and a primary color. I favor red, white, or grey.
-The secret here is simplicity. You want something you can pair easily with whatever you're wearing without too much thought, so avoid the temptation to go for anything too stylized. My personal preference is one like this:
You can also do the classic single breast three button, but avoid the super flared deal or the high double breast "mob boss" look, it won't look as fancy as you think it will.
Last bit of advice is that with all formal or business wear, but especially with coats, you will get what you pay for. Paying the extra for a high quality coat once will serve you a lot better than paying $150 every winter because it keeps going to shit.
Hope this helps, and good luck!