I have resolved this using a somewhat hacky method as follows. The following HTML is added at the end of the main page.
<div ng-show="::false" style="position: fixed; height: 100%; width: 100%; background-color: #353535; top: 0; left: 0; z-index: 10000;">
<div style="display: table; margin: 0 auto; font-size: 26px; color: #CCC;">
Loading
</div>
</div>
The message is shown across the entire browser until the page is compiled, at which point ng-show takes over and hides the loading message.
EDIT:
Angular 1.3+ lets you use the ::
expression to prevent evaluating the expression in every digest cycle.
https://docs.angularjs.org/guide/expression#one-time-binding