The best solution would be to get (or make) a vector version of the image.
If you can't do that, you'll probably get the best results by:
using a high-quality scaling method (e.g. "Sinc (Lanczos3)" in GIMP), and
adding some white margins around the image before scaling it, to avoid problems with edge effects.
That said, depending on just how small you want to scale the image, it might not be possible to keep the smallest text legible. For example, here's what I get if I scale your image down to 40% of its original size:
Yeah, the small text at the top is not very easy to read... but then, at approximately 5 pixels tall, you shouldn't really expect it to be. Actually, given its size, it's quite remarkable that it can be read at all.
One thing you could do, for very small sizes, would be to rearrange the image, scaling the different parts of it by different amounts to keep them all legible. You might even consider leaving some parts out: in the image above, for example, the line of text at the top could be removed entirely (and its information content conveyed in some other way, if necessary).
Ps. If you're designing for print, you really shouldn't be working in a raster graphics editor like GIMP at all. It's much more convenient to use a vector image editor like Inkscape, which allows you to scale images losslessly and to have them printed out at the native resolution of the printer. Alternatively, if you do want to use GIMP, make sure you're working at a resolution that at least gets close to what a good printer is capable of: I'd recommend a minimum of 300 pixels per inch.