In order to enable pipelining in HttpClient, the connection management API and therefore HttpClient would have to be remodeled to a two-phase allocation of connections. First the connection is allocated for sending the request, then released for sending (unless there is an expect-continue handshake) and allocated for receiving the response. To avoid pointless sending of requests, the connection re-use strategy should make partial decisions based on the request alone, for example if there is a "connection: close" header. Authentication and secure tunnels add another layer of complexity to this problem.
Many of the problems will have to be addressed in HttpAsync. Once we've learned how to handle pipelining there, we can attempt to bring it into the HttpClient.