Here is extended version of PlatoManiac's solution which allows changing of the direction of the hatching and also tuning the distance between hatches:
g[step_?NumberQ][{{xmin_, xmax_}, {ymin_, ymax_}}, ___] :=
Module[{yval, lines, xstart, xend},
yval = Range[ymin, ymax, Abs[step]];
If[step > 0, {xstart, xend} = {xmin, xmax}, {xstart, xend} = {xmax, xmin}];
lines = Transpose@{{xstart, #} & /@ Most[yval], {xend, #} & /@ Rest[yval]};
lines = Join[lines, {{{xstart, Last@yval},
{xstart + ((xend - xstart) (ymax - Last@yval))/Abs[step], ymax}}}];
{FaceForm[None], Rectangle[{xmin, ymin}, {xmax, ymax}],
CapForm["Butt"], Line[lines]}];
Now
data = RandomVariate[NormalDistribution[0, 1], 10000];
Histogram[data, 30, "PDF", ChartElementFunction -> g[-.006],
ChartBaseStyle -> {Directive[{EdgeForm[{Thin, Black}], Black}]},
Frame -> True]
gives

And now one can combine several histograms with different hatchings:
data1 = RandomVariate[NormalDistribution[0, 1], 500];
data2 = RandomVariate[NormalDistribution[2, 1/2], 500];
h1 = Histogram[data1, 30, "PDF", ChartElementFunction -> g[.0260],
ChartBaseStyle -> Directive[{EdgeForm[{Thin, Black}], Black, Thin}],
Frame -> True];
h2 = Histogram[data2, 30, "PDF", ChartElementFunction -> g[-.0180],
ChartBaseStyle -> Directive[{EdgeForm[{Thin, Black}], Black, Thin}],
Frame -> True];
Show[h1, h2, PlotRange -> All, BaseStyle -> Antialiasing -> False]

The histogram can be optimized by joining adjacent line segments into solid lines and deleting auxiliary points. Here is an example:
data = RandomVariate[NormalDistribution[0, 1], 100];
hist = Histogram[data, 30, "PDF", ChartElementFunction -> g[-.0160],
ChartBaseStyle -> {Directive[{EdgeForm[{Thin, Black}], Black}]}, Frame -> True];
hatchings = Cases[hist, (Line | LineBox)[{x__List}] /; Dimensions[{x}][[2]] == 2 :> x, {0, Infinity}];
hist2 = DeleteCases[hist, (Line | LineBox)[{x__List}] /; Dimensions[{x}][[2]] == 2, {0, Infinity}];
ClearAll[coeff, a, b, x1, x2, y1, y2];
coeff[{{x1_, y1_}, {x2_, y2_}}] /; x1 != x2 = {a, b} /. First@Solve[{a x1 + b == y1, a x2 + b == y2}, {a, b}];
Show[hist2,
Graphics[{Line@
Flatten[Map[SortBy[Flatten[#, 1], Last][[{1, -1}]] &,
(Split[#, #1[[2]] == #2[[1]] || #1[[1]] == #2[[2]] &] & /@
Gather[hatchings, coeff[#1] == coeff[#2] &]), {2}], 1]}]]
