El tiempo que demora probablemente se deba a que no hayas deshabilitado el ViewState del DataGrid al momento de exportar, eso si es que utilizas el método RenderControl, si utilizas objetos no manejados, por lo que he podido averiguar son más lentos que el método anterior.
Hace algún tiempo estuve trabajando en algo parecido, pude exportar algo más 60000 registros (eso depende de que cantidad de datos haya en un determinado registro), pero tuve que abandonarlo por motivos que no tendría sentido explicarlo aquí...
Te mando la dirección de un control para exportar el contenido del DataSet a un archivo Excel,
http://www.codeproject.com/aspnet/Ex...ort_button.asp, pero no sé que tanto vayan a mejorar los tiempos y rendimiento de tu aplicación...
Saludos