That it really cool!
It got me thinking about whether you can enter arbitrary function which contain arbitrary parameters, like you could for example specify Sin[k x +m] or Sin[k^m * x].
The first problem that arose was that the expression entered was evaluated directly. Using input field, you can specify that the input should be an held expression.
Secondly when I wrote the parameter "o" into my expression ("o" being a parameter that was controlled by manipulate) the expression though I meant the "o" symbol from the global context, rather than the unique "o" created within the manipulate context. I fixed this by renaming the manipulated variable "oval" and since the expression was held, I could replace every instance of Global`o with the unique oval, before releasing the hold.
Manipulate[
Dynamic[
Plot[ReleaseHold[ReplaceAll[f, {o -> oval, p -> pval}]], {x, -5, 5}]
],
{{oval, 1, "o"}, 1, 10},
{{pval, 2, "p"}, 2, 10},
{{f, Hold[Sin[o x + p]]}, InputField[Dynamic[f], Hold[Expression]] &}]

Cheers!