Trick I figured out last year snowboarding that works well on the bike, too. First, get a plain old-school ski mask with three holes, like
this. Next, get a cold gear Under Armor hood, like
this. Wear the UA hood over the ski mask. What makes this a good combo is that ski mask keeps the cloth from UA hood slightlly away from your mouth/lips/face/etc. Hence, you don't experience moister on the mask as much and things don't freeze up nearly as fast...and it's super-duper warm.