Sino me equivoco lo más complicado de lo que pides es el call stack. La biblioteca jedi tiene un call stack implementado, de hecho es el que usa el IDE
Lo que podes hacer es controlar todo desde el evento OnException de TApplicationEvents. No puede ser muy difícil escribir un propio logger que según el tipo de excepción grabe en distintos archivos por ejemplo. Además es el lugar más indicado para poner mensajes más amigables para el usuario