Es *absolutamente* necesario que el usuario espere????
Porque de lo contrario, yo diria que es mejor poner el proceso en un thread en el background y notificar cuando haya terminado (tipo notificacion de messenger).
Muchas veces la desesperacion es mas porque el programa esta colgado, a que el proceso en si se demore...
--------
No olvides mirar las recomendaciones que da la documentacion de la BD:
http://www.firebirdfaq.org/faq209/
O quizas:
http://www.firebirdfaq.org/faq336/
---------
He usado
http://www.da-soft.com/anydac/ y en mi experiencia con este driver (de pago) es que tiene un excelente desempeño. Mucho mejor que lo que viene de "fabrica" en Delphi