Here's way along the lines in the OP:
Manipulate[
With[{opts = Sequence @@ opts},
Plot[Sin[x], {x, 0, Pi}, opts]], {p,
PopupMenu[Dynamic[p, (q = opts[[#, -1]]; p = #) &],
Thread[Range@Length@# -> #] &[First /@ Options[Plot]]] &},
{{q, Null},
InputField[
Dynamic[q, (opts = ReplacePart[opts, {p, -1} -> #]; q = #) &]] &},
{opts, None},
TrackedSymbols :> {opts}, Initialization :> (opts = Options[Plot])]