Ok, here is the theory behind how the compression test may not show a slight head gasket leak at running temp:
Your cooling system is pressurized to provide a higher boiling point to the water and avoid overheating. If at operating temperature with the engine running the head gasket has a bad spot somewhere, you may be loosing some of the pressure needed to keep the water temperature from reaching the boiling point and therefore the car will overheat. The leak might be so small that no actual water enters the cylinders but just steam so you probably would not see any water in the oil or have white smoke coming from the exhaust.
Have you checked your expansion tank with the engine running to see if it shows any bubbles? If it does this may be an indication of a bad head gasket. Check it when the engine is not super hot or it will boil over and spoil the experiment.
The thermostat theory also seems to hold. Try removing the thermostat and running without it. If it still runs hot and you want to avoid jumping into the headgasket replacement, perhaps have the readiator checked for deposits or have it replaced.
From what you have told us so far, you have checked all the components, perhaps it is time to start replacing some cooling system parts systematically until all is absolutely ruled out. At that point all that will be left is the head gasket theory.