I found the easiest solution was to put some padding on the top of the contentpage so that it would clear the header.
<apex:page renderAs="pdf" applyBodyTag="false" >
<head>
<style type="text/css" media="print">
@page {
padding-top: 40px;
@top-center {
content: element(header);
}
@bottom-left {
content: element(footer);
}
}
div.content {
padding-top: 30px;
}
div.header {
padding: 10px;
background-color: red;
position: running(header);
}
div.footer {
display: block;
padding: 5px;
position: running(footer);
}
.pagenumber:before {
content: counter(page);
}
.pagecount:before {
content: counter(pages);
}
</style>
</head>
<div class="header">
<img src='https://na5.salesforce.com/img/seasonLogos/2015_summer.png' title="logo" width="173px" height="65px" />
</div>
<div class="footer">
<div>Page <span class="pagenumber"/> of <span class="pagecount"/></div>
</div>
<div class="content">
<p>Actual page body information.</p>
<div style="page-break-after: always"/>
<p>Page Body content for the second page</p>
</div>
</apex:page>