It could be due to almost anything– condensation on the ignition wires, a microscopic crack in the distributor cap, or a malfunctioning cold-start enrichment valve or a stuck choke on a really old car.
I would start by figuring out if it’s due to lack of gas or spark. When it doesn’t start on a cold day, take the filter off the air intake and squirt in some gasoline or ether starting fluid. If it then starts right up, but then dies or runs poorly for a while, it’s probably due to lack of gas– like a bad enrichment valve, or a bad temp sensor, or a stuck choke on a really old car.
If that doesn’t get it started, the problem might be lack of spark, so on a good day when it’s running, squirt some water all over the ignition wires and the distributor and coil and see if that causes it to stumble and/or die.
That will help narrow down the problem.
And oh, if it cranks over ever so slowly on a cold day, you might need a new battery, or maybe a switch to thinner winter or synthetic 5W-20 oil.