A new control for setting a label's "z-index" has been added to the labeling properties dialog. This control (which also accepts data-defined overrides for individual features) determines the order in which labels are rendered. Label layers with a higher z-index are rendered on top of labels from a layer with lower z-index.
Additionally, the logic has been tweaked so that if 2 labels have matching z-indexes, then:
Diagrams can also have their z-index set (but not data defined) so that the order of labels and diagrams can be controlled.
Note that this does NOT allow labels to be drawn below the features from other layers, it just controls the order in which labels are drawn on top of your map.
This feature was developed by Nyall Dawson