Craig,
Have you tried creating a less than equal to IE7 conditional style sheet to target IE6 and IE7 and positioning the absolute positioned elements using left: and top: attributes as opposed to margins? For instance:
#intl-flags {
width: 400px;
z-index: 2000;
margin: 0;
position:absolute;
top: 0;
left: 300px;
}
#search {
height: 50px;
width: 300px;
z-index: 2000;
position:absolute;
top: 40px;
left: 300px;
}
#viewcart {
height: 50px;
width: 225px;
z-index: 2000;
position:absolute;
top: 40;
left: 500px;
}
Also, is your containing element (assuming the header is a div) set to position: relative;?