If your engine has a carburetor, the hard starting problem is most likely choke related. If the engine cranks normally and the spark plugs are not worn or dirty, the choke probably needs to be repaired or adjusted.
The choke may be set too rich or too lean. Either way can cause hard starting. Inside the choke housing is a bimetal spring that regulates the tension on the choke according to temperature. If this spring is broken, the choke will not operate. If the choke linkage is rusty or jammed with varnish deposits or dirt, it may stick or not operate smoothly. Cleaning with carburetor spray or solvent may help alleviate a sticking problem.
On older fuel injected engines, a separate "cold start" injector is used to spray additional fuel into the intake manifold when a cold engine is first started. If this injector is not working, the engine can be hard to start. The injector is controlled by a timer and relay, so if either of these components is defective it can prevent the cold start injector from doing its job, too.
If your engine cranks slowly, your cold starting problem is not fuel related, but may be due to a weak battery, loose or corroded battery cables, or a weak starter.
Check for obvious problems first. Remove, clean and inspect the battery cables (both ends). Then check battery charge and condition. (More information on the condition of your battery and battery recharging is available.) If the battery charge is low, recharging the battery may temporarily solve your problem. But there's a reason why your battery is low. You probably have a charging system problem that requires further diagnosis. (More information on alternators is also available.) If your battery is more than four or five years old, it is probably near the end of its service life and needs to be replaced. A "load test" will tell you if it still has sufficient cranking capacity to provide reliable cold starting.
Slow cranking during cold weather (below freezing) can also be caused by oil that is too thick. A high viscosity oil such as straight 30 or 40 weight oil in the crankcase can make an engine very difficult to crank when the temperature drops. Switching to a lighter multiviscosity oil such as 10W-30 or 10W-40 should solve this problem.