Lots of correct answers here. In the summer I typically get between 80 and 100mpg on the highway. I'm struggling to get 65 with the 0 to -10F weather we've been having, and without any modifications to my car, I'd be seeing upper 40's to lower 50's.
Off the top of my head, some factors:
Combustion is less efficient at lower temperatures. You can improve this by building a warm air intake. I have a piece of dryer duct which I run from my air filter box to near the catalytic converter during the winter. When the car is fully warmed up, I can see intake air temperatures in the 80's to 90's with an outside air temperature of -10F.
Cold air is more dense, and more dense air = more power (e.g. cold air intake) = the throttle plate is less open to generate the same amount of power = more vacuum = wasted energy. A warm air intake can help this too.
When the air is cold, you have marginally higher aerodynamic drag.
Cold engines are less efficient for a variety of reasons, and when it's cold out, they start colder and take longer to warm up. They're designed to have certain tolerances at operating temperature, and those tolerances are different before the metals have expanded, so friction is higher. Cold cylinder walls absorb more heat from combustion, meaning you get less of it turning the crankshaft and more of your combustion energy dumped into your coolant. The warmer your cylinder walls, the less energy is lost this way.
I have a block heater and an oil pan heater in my car, but I can't use them this year due to not having an outlet available. They help significantly in shorter trips. I also have a grille block to direct less of the frigid air through the engine bay. You can cut up a piece of cardboard or use a trash bag, and partially (or fully) cover your grille, but I suggest you keep an eye on temps for a while if you cover more than, say, half of it. I can personally 100% block my grille when it's below freezing and even then, the thermostat doesn't always fully open.
When cold, lubricants are thicker. When it's -10 outside it feels like I'm pushing jello through my clutch line, and my shifter feels stiff for at least the first 10 miles. You can bet the same is true of antifreeze and engine oil, and as parts move inside the engine, they have to push this thicker fluid out of the way. I run what's effectively at -10w15 in my engine here and it helps. (FWIW The car has had this oil for nearly the last 250,000 miles, it still has perfect compression and Blackstone hasn't found anything unusual in my oil samples so it's not causing excess wear. It shouldn't though, considering it's what Honda calls for in most of their vehicles in Europe and Japan.)
Cold tires have higher rolling resistance. Slush on the roads increases rolling resistance, much like standing water.
As others have suggested, cold air causes your tire pressure to drop, and you're also likely spending more time idling.
While true lubes tend to "thicken" when cold, I'd be willing to wager the lubes in a vehicle not subject to engine heat, like wheel bearings, U-joints, etc., are at normal operating temps. within a mile.
My testing suggests otherwise. On a flat road, I've found my fuel economy continues to rise for at least 40 miles, despite coolant temperature peaking after ~5-10.