That would certainly drive me nuts. If I couldn't get it to work I'd toss in the towel and force a page break before the h3 tag.
For the sake of consistency I wrap all of my h? tags in header tags. This may not (or probably) won't help but what if you did that and in your css had something like mine,
Code:
header {
display: block;
margin-top: 2em;
margin-bottom: 5em;
page-break-after: avoid;
page-break-inside: avoid;
}