A simple vista creo que el problema esta aqui:
Código Delphi
[-]
nuevoTema^.mensajes:=oMensajes;
oMensajes.destroy;
Despues de destruir el objeto oMensajes, nuevoTema^.mensajes hace referencia aun objeto que ya no existe por lo que cualquier intento de acceder a el provocara un error.