Adscatt beat me to it...I vote that the thermostat is stuck open, so coolant is always flowing through the rad, at high speeds this will mean the engine is being over-cooled.
If you start the car from cold and leave it idling or (if its a diesel and you can't spare the hour it'll take to warm up) take it for a short drive but stop before the temp gauge gets to its normal position, then let it idle. Keep checking the rad, if it gradually warms up before the gauge reaches its normal position, then the thermostat could be stuck. Normally the rad will stay cold until the engine is nice and hot, then the stat will open and the rad will get hot within a minute or so. Keep fingers clear of the fan as it may start as the engine gets up to temp, particularly if the climate control is on.
You can also remove the stat and drop it in a pan of boiling water to see if it reacts, although this involves a bit of spannering it will give you a definite answer. Easy to remove after draining the coolant but could be difficult to get to on a modern car. I'm sure someone will correct me but I believe its normally where the upper hose to the radiator leaves the engine block. You will need a new gasket or a tube of liquid gasket to reseal the stat and prevent water leaks.
The other possibility is an air lock, the heater matrix tends to be the highest point so this could cause lack of heating. But I wouldn't be able to tell you why the air lock manages to clear itself, normally it would need bleeding.