Sure, you could hit the indoor trainer, or the gym... but it can be horribly boring, and I personally just can't get the long rides in. Solution: get outside. I get out there anytime there's (1) light and (2) it's -8C or above (17F)
I have two - one with a felt lining for below freezing, one without for above.
Second (optional) is a face covering... I have one that covers my cheeks, nose, mouth, but I never use it. If it's that cold, the trainer starts to look a lot better...
Layers, layers, layers!
1) Cycling jersey
2) Long-sleeve felt lined top
3) Jacket (unlined)
I have tried other combinations - like just one thick jersey and then the jacket, but I find having more layers lets the moisture wick away better. And it gives you more flexibility if you start heating up.
I usually wear my mountain biking ones (pictured). I have tried ski gloves, but found my hands just got too sweaty.
Bike shorts with leggings on top.
These ones are from Mountain Equipment Co-op, and have a wind-proof front to them. They can be a bit stiff and bulky, but everything else I've tried hasn't blocked the wind well enough.
This is probably where I've had the most trouble, but I finally seem to have got it.
1) Thicker socks than normal. Not so thick that your shoes are tight, though...
2) Feet warming inserts. Put these on the top of your foot covering your big toe
3) Good lined shoe covers. Windproof ones don't cut it here, you need the thicker ones.
Does it Really Work?
Absolutely! Most times I'm toasty warm. In fact I tend to have more trouble being too warm than not warm enough.
It's a lot more preparation than the spring, but I love it. I love bombing down a snow-covered road on my cyclocross bike, or hitting a packed trail on my mountain bike... it's fun, challenging, and best of all it's outdoors. And being outdoors is what I love most about cycling!