you don't say what model BMW this is but
I'd first check that the engine is getting up to temperature, if its not then its likely the thermostat needs changing.
If this is OK have a feel of the two coolant pipes that pass into the car through the engine bay bulkhead, both should be warm with a warm engine. If they're not then its likely the heater matrix is blocked and you should do a reverse flush on the cooling system to try and clean it out. This is done by removing the top hose from the radiator and placing a garden hose into the engine water outlet, and then run the hose until you get clean water coming out of the radiator.
If this doesn't help this only leaves checking out the motor / cable that move the air mixing flap that allows the hot air from the matrix to enter the car air system.
This flap is controlled by the temperature knob / dial etc and may be controlled with a small motor for your car ( if its an earlier modela than 1998 its probably a mechanical cable)so the thing to do is first get access to the back of the control knob and measure the voltages is present there, then trace the wiring back into the dash from the control to locate the motor.
It’s worth first checking the fuses for the fan / control circuit
I'd recommend first removing the glovebox ( undo lower edge hinges from dash) to gain access to the dashboard inner and also allow you to shine a torch to the back of the central console so you can start tracing the wire back and see how things are put together