Personally, when dealing with functions depending on a parameter I prefer the notation f[param][vars].
f[w_][x_] := 2 Cos[w x]^2 + Sin[w x]^4
You can plot f vs y for a given value of the parameter w
w0=.5;
Plot[f[w0][x],{x,-6,6}]
Or you can see how changing the parameter alters the value of f for a given x
x0=2;
Plot[f[w][x0],{w, 0.1, 0.9}]
Or you can have the whole she-bang with a Plot3D
Plot3D[f[w][x], {x, -10, 10}, {w, 0.1, 0.8}]
If your parameter has only discrete values, then you can create table of functions and plotting them all in a 2D graph.
funs = Table[f[w][x], {w, 0.1, 0.7, .2}];
Plot[Evaluate[funs], {x, -10, 10}]
Or in a 3D graph using one of the approaches suggested in the other answers. But let me add this procedure, taken from Bahder's "Mathematica for Scientists and Engineers":
LinePlot3D[data_, opts___] := Show[Graphics3D[Line /@ data, opts]]
Its advantage is to be able to work on experimental data. To use functions like the one defined above, you need a simple line to generate the points
data = Table[{x, w, f[w][x]}, {w, 0.1, 0.7, 0.2}, {x, -10, 10, .1}];
and then you can plot the curves
LinePlot3D[data, BoxRatios -> {1, 1, 1}]
Done.
(EDIT: I just realized that ListPointPlot3D does what Table and LinePlot3D do, but in a single command - it wasn't there on version 2!)