Primary importance is wearing a quality base layer. Keeping your core warm is probably the most important thing to do in order to keep your entire body and extremities warm. It can be thinner, but make sure it is fairly tight to your skin. This will keep you the warmest. Merino wool is probably the best option in my mind because it helps regulate your body temperature by keeping you cool when it is warm out and warm when it is cold out. Other technical base layers are good as well from brands such as 2XU and Craft, which are widely used in snow sports.
For my feet– I wear some merino wool socks as well when on the trail. I don’t want them too thick because I still want plenty of room for my feet and toes to wiggle around in the shoe. Try some on before you head out to the race and make sure your feet are not too cramped in the shoe with a thick sock.
If it is raining, find yourself a light and breathable jacket. It does not need to be Gortex. Actually, it should not be Gortex or waterproof. Those tend to be the least breathable and you will be sweating like a mad dog. Just a light additional shell layer is all that is necessary.
If you are planning on running the 50k or 100k and might be out on the course for 6–18+ hours, than you should bring a few back up layers. This is especially important if you do not have merino wool options. Even in a wool layer, I get tired of being wet after a few hours. You will want dry clothes to change into after the race. Get a nice warm meal post race no matter how terrible you feel and change out of your wet clothes.
Oh, remember to have fun!
Looking for local shops to pick up winter gear? Lots of run specialty shops are having sales right now. Check out Jack and Adams, Rogue Running, Texas Running Co, Ready to Run, Whole Earth Prov for the best gear options.