Either the heater tap is not opening and letting hot coolant through to the core, or the heater core itself is blocked, which is a very common problem with vehicles when the interior heater does not get used very often. The core builds up with sediment etc when not in use, and this sediment turns to mud and then starts to corrode the core until it leaks. Ive seen these heater cores absolutely full of mud, even though coolant was used in the cooling system, you can hose it out with a garden hose by disconnecting the supply and return heater hoses under the bonnet and sticking the hose up in them, but doing this will sometimes start them leaking heaps if theyre already badly corroded, the sludge usually blocks up any existing holes.
Its best to use the heater on full hot once every couple of weeks, just like you would do with A/C during the wintertime to keep it in working order, using the heater does the same thing, will keep fresh coolant flowing through the core, and this helps stop the buildup of crap and keeps fresh coolant flowing through it, which will help stop it from corroding as coolant contains corrosion inhibitors..
Also make sure the engine is getting up to its proper operating temperature, because if the engine has a cooler than factory fitted thermostat, or if someone has removed the thermostat altogether, then the engine will run dead cold and the interior heater will be dead cold too.