Cranking the engine pulls the battery voltage down. Sometimes, the voltage is so low during cranking that there isn't any spark. It might work better in warmer weather when the battery will be stronger and it takes less current to crank the engine. There could be an issue with your starter causing it to draw too much current.
Put a voltmeter on your battery, and see what the voltage drops to when you crank the engine. If the battery voltage drops to around 8 volts, the bike won't fire. If your battery voltage still looks good when cranking, look for other things that would cause voltage drop, like a bad ground.