Well, first of all, thank you for making me go through disciplined steps! It's been an object lesson.
I worked my way through the full list, removing things. When I finally got down to a non-css and non-php simple html file - with all java and php code stripped out - I found in IE7 that after having more than 6 input tags in my first fieldset the anchor didn't work on post, but did if I stripped out all but 6 input tags and stripped out the other fieldset with the select with 10 options. I could leave in my third fieldset (containing 5 inputs and a textarea).
If I removed an input field from the last fieldset and put it in the first fieldset, things started not to work properly again, so it does seem to be some weird limit that IE7 can't handle - on this form. I did have divs surrounding the input tags but removing them or adding them back doesn't change anything about the behaviour.
However, this is a simple postback. When I apply these changes to the full php-css version I find that on clicking submit without filling in anything the form with error messsage comes up in exactly the right place at the anchor - and as soon as I add in extra input tags it doesn't. So something identified there.
BUT when I fill in an post the form and all works well, it still doesn't go correctly to the anchor tag.
AND, it doesn't explain at all why the telephone-counseling.php form, with 5 input fields and one textarea doesn't go to its correct anchor position either on error or on successful send.