I've never had a good way to prevent widowed Group Headers on a Crystal Report. By "widowed Group Header", I mean a report where the last thing on a given page is the next Group Header and there isn't any room for details, so it's just the header by itself.
If you use the "Keep Together" options of either the Section Expert or the Change Group dialog then you don't get any widows but you get big chunks of blank space, so it's not the answer.
The best answer I found for my needs is described here as "Method Two".
Like most things, it's pretty simple once you know the answer!
You stick the first detail of the group into the Group Header and then set the Group Header to have "Keep Together" turned on in the Section Expert. Now you will always have at least one detail with the Group Header.
But that would leave you repeating your first detail, right? So to deal with that part, you put a suppression formula into the Detail section like this:
//This formula
conditionally suppresses the first record of the Details //section.
//Replace
{database.field} with the field by which you are grouping.
WhilePrintingRecords;
Onfirstrecord
or {database.field} <> Previous({database.field})
It's a thing of beauty!