A bad thermostat is about the only thing I can think of that will prevent the car coming to operating temp properly. Replace it.
Lack of heat can also be a bad thermostat, but could be a number of other things. Assuming this is a W126, try pulling the plug to the monovalve (behind the firewall near the center of the car). You should get full heat, reguardless of what the climate control is set for. If you don't, it is stuck closed. They usually fail open, though.
Otherwise, it is mostly likely either the pushbutton control unit or a bad temp sensor.
The sunroof is most likely a lack of lubrication. You will need to use the MB sliding sunroof paste, about $50 for a 1 lb can, will last forever, or have it done by a shop that will use the stuff. Nothing else works as well, and in fact the wrong lube will cause more trouble later. The worst case senario is that you have a broken lift angle that will need to be replaced. Search the posts on sunroof problems.
1972 220D ?? miles
1988 300E 200,012
1987 300D Turbo killed 9/25/07, 275,000 miles
1985 Volvo 740 GLE Turobodiesel 218,000
1972 280 SE 4.5 165, 000 - It runs!