Just to post that I have resolved this issue, in case the solution is of any interest to anyone.
I did exhaustive testing and couldn't in fact pinpoint why IE (7 and 8) was not returning to the form heading anchor after posting - when all other browsers (5 main ones) were behaving perfectly.
I did find that IE performed better when I put the right-float right column ahead of the left-float left column in the markup, and moved the php processing code before the doc declaration. There was something going on about page-loading but exactly what I couldn't say.
Rather than waste any more time on IE, I have put a goToAnchor script in the head, a $fmposting variable at the end of my php processing code, and a php conditional onload statement in the body tag. That now works very nicely, and if javascript is disabled, the return to anchor still works very well in the other browsers and at least not as badly in IE as it did.
Here's the stuff, in case it's useful to anyone else, and in case anyone can see a way of improving it!
Script in Head:
<script type="text/javascript">
function goToAnchor() {
window.location.hash="#contactfm";
}
</script>
Conditional code in Body Tag:
<body id="top" <?php if ($fmposted==true) {echo 'onload="goToAnchor()";';} ?> >
And, of course, $fmposted is set right to true at the end of my php posting code above the doc declaration, regardless of whether the message was sent or there was an error.
Peter