Chances are your heater-core is plugged... I had this issue a few years ago when I first moved to WA, winters were plenty cold and heat would barely give me +20F over outside air temp... disconnect the lines to the core, and blow it out with hose water (try blowing into both sides and see how much crap comes out) then get out the wet/dry vac to suck all the rest of the goo out.
After this, my heater keeps up and actually gets too hot when driving down the highway at speed even when it's -10 outside. Btw, I was in eastern oregon a few weeks ago and it hit -15F I had to stop to see just how cold it was. Very strange temperature, it didn't feel that cold, but it did rather hurt. We tried blowing bubbles, which froze in the air and shattered when they hit the ground, was really cool.
Also, you can do some other things to better insulate the vehicle, I have reflectix panels I use to cover the windows when I'm putting the vehicle up for the night, also a few years ago when I was working on the vehicle, I stuffed reflectix into the door panels (inside the sheet metal) and then again behind the door skins (between the inside of the door, and the trim panel inside). If you ever take down the headliner, be sure to put reflectix in as a pad/insulation layer. I originally did this to keep the AC in, but it works just as well to keep the cold out.