You could try doing some or all of the calculation in rational numbers, and
converting
to bigfloat at the end.
This might be slower.
Another way, non-portable, is to use the MPFR library for the elementary
operations.
The library itself is
fairly portable, but the lisp-to-MPFR interface varies from one common lisp
to another.
MPFR may already have a gamma function that can be used directly from the
library..
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/pf3gnuchains/mpfr/gamma.c