Here's my solution, for my IO-240B (which HATES cold weather):

Cobbled space heater with dryer vent hose stuck in the cowl. I usually leave it run with thermostat
set on low in the hangar. This is the best solution and
I get oil temp almost as soon as I start the engine

http://www.northerntool.com/shop/too...FelAMgodlC8AXQ


If I don't leave it running, then it will get the IO-240B up to starting temp
even down to zero degree temps in about an hour of preheat.

I also have high current quick connect fitting on the passenger side by
the instrument panel and drop an old car battery with matching quick
connect on the passenger side floor for initial start on cold days. I have
an odyssey PC680, but the IO-240 can really stress it in cold weather.
The car battery gets it cranking almost like a car engine in cold weather.

Usually I don't need the battery though if the engine is well preheated.

I flew a Diamond a year or so ago in winter with an IO-240, and it was
nearly impossible to start it's IO-240 in the cold. I could probably hand prop
it faster than the starter rolled. This was on a 20 something day.