The heat on my TJ has bit the big one for years. If you don't let it idle to at least heat the cab up till the steering wheel is warm to the touch, it will never keep up wherever you are going if the temp is below say 20 degrees.
There are supposedly several things that cause the heat to be terrible in TJ's. The heater core plugging with sludge is a big one. Next is the intake getting plugged up with junk, which in turn plugs the heater core fins. There is some sort of a seal that goes bad under the hood and allows debris to get into HVAC. My heater regularly sprays me with pine needles, bugs, leaves, and associated crap.
The remedy is to pull the cowl, and epoxy some thick plastic to plug most of the cowl vents, and epoxy some pet proof window screen over whats left to keep large particulate matter and squirrels out of the cowl (you glue it to the back so it looks clean). Pull the air intake clean everything out, reseal with silicone. Pull the dashboard. Pull the heater core. Flush. Clean fins. Reinstall. A clean heater core goes a long way to getting heat into the cab of a TJ.
I haven't done this stuff yet, I just don't drive it in the winter unless its a snow storm or I'm cutting wood, and those times I'm wearing full gear as it is, so the heat doesn't matter much.