Answering my own question, the solution is to use conn->keepalives counter which is incremented at the end of each request. By storing the previous count and comparing with the current count one can tell when a new request is coming in over the keepalive connection. This technique is now documented in the mod_perl land:
Sorry, but I think something is off here.
Why should a connection-level filter know about HTTP requests? -- justin