It should not take that long, maybe a mile. In about 20 degree temps thats all it takes for mine to start blowing some warm air. You might have a stuck thermostat or a problem with the flapper valves in the heat system. Does your engine temp gauge come up before you feel heat?
If your just idling the engine is not going to warm up as fast as when your putting a load on it. My other truck was a diesel and then I had to let it idle so it would run good in cold weather but now that I have a gasser, I start and drive. If its around zero I would then let it warm for a while, but the coldest its been here with my new truck is around 10.
Haven't really timed it. I get some heat after about two miles. I live 3 1/2 miles from the interstate. As I pass under it, I'm getting heat. It's better after about another mile or so. Good point, though. Is the temp gauge up fairly quickly?