I have done recently exactly what robiwan suggested.
After that, I thank about a more general (juce speaking) solution : creating a custom allocator for the Message class (i.e. redefining new and delete operators for this class).
This idea behind this is that postMessage is central to the juce API (ChangeBroadcaster, setXXX on a component, ect. rely on it) and finding a way to enable all of this features from the real time thread is worth it.
One possibility would be to change the API to use a passed by value message instead of an allocated message, but that would break a lot of code.
On the other hand, writing a custom allocator for Message that would use a pool of buffer, while not completely trivial (that code must be multithread safe) won’t break anything.
A final word: when using Pro Tools on a dual-core with Leopard, a single tiny new() always lead to 9128 errors, so I think this is a severe issue in Juce.