Hiding part of ListLinePlot
This is a hack may be as I do not see now a direct option to do this.
Combine the 2 list plots into one, using Epilog
then use Show
red = Table[{i*h,Sin[i*h]},{i,0,100}];
blue = Table[{i*h,Cos[i*h]},{i,0,100}];
vLine = Graphics[{Black, Dashed, Line[{{Pi/2, -1}, {Pi/2, 1}}]}];
p = ListLinePlot[blue[[1;;51]],
PlotStyle->Blue,
PlotRange->{{0,3},Automatic},
Epilog->First@ListLinePlot[red[[51;;-1]],PlotStyle->Red]];
moment=Show[{p,vLine},PlotRange->{{0,3},{-1,1}}]
h = π / 100;
{d1, d2} = Table[{i h, #[i h]}, {i, 0, 100}] & /@ {Sin, Cos};
{ms1, ms2} = {{Opacity[0], Red}, {Blue, Opacity[0]}};
{i1, i2} = ListLinePlot[#[[1]],
PlotStyle -> Thick,
Mesh -> {{π/2}},
MeshStyle -> None,
MeshShading -> #[[2]]] & /@
{{d1, ms1}, {d2, ms2}};
Show[{i1, i2},
GridLines -> {{{π / 2, Directive[Thick, Dashed]}}, None},
PlotRange -> All]