I liked GMasucci's answer better than JSON serialization because the serialization did not extract the values of the Headers.
I modified GMasucci's answer to be an extension method and use StringBuilder and AppendFormat so that nulls don't blow it up, so if you up-vote this answer, please up-vote his as well. I commented out what seem to be deprecated properties too:
public static String ToStringReadable(this HttpWebRequest request)
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("[Accept] = {0}", request.Accept);
sb.AppendFormat("{0}[Address] = {1}", Environment.NewLine, request.Address);
sb.AppendFormat("{0}[AllowAutoRedirect] = {1}", Environment.NewLine, request.AllowAutoRedirect);
//sb.AppendFormat("{0}[AllowReadStreamBuffering] = {1}", Environment.NewLine, request.AllowReadStreamBuffering);
sb.AppendFormat("{0}[AllowWriteStreamBuffering] = {1}", Environment.NewLine, request.AllowWriteStreamBuffering);
sb.AppendFormat("{0}[AuthenticationLevel] = {1}", Environment.NewLine, request.AuthenticationLevel);
sb.AppendFormat("{0}[AutomaticDecompression] = {1}", Environment.NewLine, request.AutomaticDecompression);
sb.AppendFormat("{0}[CachePolicy] = {1}", Environment.NewLine, request.CachePolicy);
sb.AppendFormat("{0}[ClientCertificates] = {1}", Environment.NewLine, request.ClientCertificates);
sb.AppendFormat("{0}[Connection] = {1}", Environment.NewLine, request.Connection);
sb.AppendFormat("{0}[ConnectionGroupName] = {1}", Environment.NewLine, request.ConnectionGroupName);
sb.AppendFormat("{0}[ContentLength] = {1}", Environment.NewLine, request.ContentLength);
sb.AppendFormat("{0}[ContentType] = {1}", Environment.NewLine, request.ContentType);
sb.AppendFormat("{0}[ContinueDelegate] = {1}", Environment.NewLine, request.ContinueDelegate);
//sb.AppendFormat("{0}[ContinueTimeout] = {1}", Environment.NewLine, request.ContinueTimeout);
sb.AppendFormat("{0}[CookieContainer] = {1}", Environment.NewLine, request.CookieContainer);
//sb.AppendFormat("{0}[CreatorInstance] = {1}", Environment.NewLine, request.CreatorInstance);
sb.AppendFormat("{0}[Credentials] = {1}", Environment.NewLine, request.Credentials);
//sb.AppendFormat("{0}[Date] = {1}", Environment.NewLine, request.Date);
//sb.AppendFormat("{0}[DefaultCachePolicy] = {1}", Environment.NewLine, request.DefaultCachePolicy);
//sb.AppendFormat("{0}[DefaultMaximumErrorResponseLength] = {1}", Environment.NewLine, request.DefaultMaximumErrorResponseLength);
//sb.AppendFormat("{0}[DefaultMaximumResponseHeadersLength] = {1}", Environment.NewLine, request.DefaultMaximumResponseHeadersLength);
sb.AppendFormat("{0}[Expect] = {1}", Environment.NewLine, request.Expect);
sb.AppendFormat("{0}[HaveResponse] = {1}", Environment.NewLine, request.HaveResponse);
sb.AppendFormat("{0}[Headers] = {1}", Environment.NewLine, request.Headers);
//sb.AppendFormat("{0}[Host] = {1}", Environment.NewLine, request.Host);
sb.AppendFormat("{0}[IfModifiedSince] = {1}", Environment.NewLine, request.IfModifiedSince);
sb.AppendFormat("{0}[ImpersonationLevel] = {1}", Environment.NewLine, request.ImpersonationLevel);
sb.AppendFormat("{0}[KeepAlive] = {1}", Environment.NewLine, request.KeepAlive);
sb.AppendFormat("{0}[MaximumAutomaticRedirections] = {1}", Environment.NewLine, request.MaximumAutomaticRedirections);
sb.AppendFormat("{0}[MaximumResponseHeadersLength] = {1}", Environment.NewLine, request.MaximumResponseHeadersLength);
sb.AppendFormat("{0}[MediaType] = {1}", Environment.NewLine, request.MediaType);
sb.AppendFormat("{0}[Method] = {1}", Environment.NewLine, request.Method);
sb.AppendFormat("{0}[Pipelined] = {1}", Environment.NewLine, request.Pipelined);
sb.AppendFormat("{0}[PreAuthenticate] = {1}", Environment.NewLine, request.PreAuthenticate);
sb.AppendFormat("{0}[ProtocolVersion] = {1}", Environment.NewLine, request.ProtocolVersion);
sb.AppendFormat("{0}[Proxy] = {1}", Environment.NewLine, request.Proxy);
sb.AppendFormat("{0}[ReadWriteTimeout] = {1}", Environment.NewLine, request.ReadWriteTimeout);
sb.AppendFormat("{0}[Referer] = {1}", Environment.NewLine, request.Referer);
sb.AppendFormat("{0}[RequestUri] = {1}", Environment.NewLine, request.RequestUri);
sb.AppendFormat("{0}[SendChunked] = {1}", Environment.NewLine, request.SendChunked);
//sb.AppendFormat("{0}[ServerCertificateValidationCallback] = {1}", Environment.NewLine, request.ServerCertificateValidationCallback);
sb.AppendFormat("{0}[ServicePoint] = {1}", Environment.NewLine, request.ServicePoint);
//sb.AppendFormat("{0}[SupportsCookieContainer] = {1}", Environment.NewLine, request.SupportsCookieContainer);
sb.AppendFormat("{0}[Timeout] = {1}", Environment.NewLine, request.Timeout);
sb.AppendFormat("{0}[TransferEncoding] = {1}", Environment.NewLine, request.TransferEncoding);
sb.AppendFormat("{0}[UnsafeAuthenticatedConnectionSharing] = {1}", Environment.NewLine, request.UnsafeAuthenticatedConnectionSharing);
sb.AppendFormat("{0}[UseDefaultCredentials] = {1}", Environment.NewLine, request.UseDefaultCredentials);
sb.AppendFormat("{0}[UserAgent] = {1}", Environment.NewLine, request.UserAgent);
return sb.ToString();
}