OK, so EPS cannot support true transparency / opacity, but that does not mean that Mathematica 7 apologizes for such poor performance. As my Mathematica 8 testifies, you can make it better.
The problem with the release of Mathematica 7 is that it uses the same color for the fill as for the curves, when you really need a lighter color. EPS is a simple text format, so it's pretty easy to write a quick hack. Here's a quick tute on PS graphics.
In the PS-graphic, you define the path that you say, whether you want to stroke it (lines) or fill (areas) - or other things that we do not need to worry about. Colors are set and remain there until they are reset. So I just import the EPS created by Mma7 and find all the filled paths. For each filled path, you find the previous color and reset the color just above the fill command to be something easier.
So here is an example (I did not bother to pack it into one script / module). All products from Mathematica 7.0.1
p = Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, Filling -> Axis]

Export to EPS file using Export["BesselJs7.eps", p] . This creates terrible graphics like 
Ok now fix
pList = Import["BesselJs7.eps", "List"]; (* Import image as a list of strings *) FList = Flatten@Position [pList, "F"]; (* find all fill commands *)
Notice that the EPS file has the line /F { fill} bind def , which defines the label F In addition, you can check that pList[[FList - 1]] lists "closepath" s.
FColorList = {}; (* get list of colors associated with fills *) Catch[Do[ i = 0; rgb = True; newpath = True; While[rgb || newpath, (*Print[{f,i,fi,rgb,newpath,pList[[fi]]}];*) If[rgb && StringMatchQ[pList[[f - i]], __ ~~ "r"], rgb = False; AppendTo[FColorList, pList[[f - i]]]]; If[newpath && StringMatchQ[pList[[f - i]], "newpath" ~~ __], newpath = False; np[f] = f - i]; If[f - i == 1, Throw[{f, rgb, newpath}]]; i++], {f, FList}]]
Now crack new colors - all I do is add .5 to each rgb value. This can be done better:
FColorListNew = Table[ Most@ToExpression @StringSplit[f] + .5, {f, FColorList}] /. _?(# > 1 &) -> 1.; FColorListNew = Table[StringJoin[{Riffle[ToString /@ f, " "], " r"}], {f, FColorListNew}];
Finally, insert the new colors and write them back:
Do[pList = Insert[pList, FColorListNew[[i]], np[FList[[i]]] + i], {i, Length[FList]}] Export["BesselJsFixed.eps", pList, "List"]

Some things, such as finding newpath locations, are not needed, and all of this can probably be matched. But I spent enough time on this!