Ultimately, the consensus rules are set by (the consensus of) those running full nodes, and not by miners. If all Bitcoin node operators decided to switch to different rules for whatever reason, miners have no choice but following, or see their blocks become worthless.
Because of that, in the extreme, miners have no say at all. They have to produce blocks that satisfy the rules that full nodes demand.
Of course, in practice, the hard part is how to get consensus among full nodes, and this is a public debate in which many parties participate: developers, users, and miners. All of them have an incentive to form a consensus, because the alternative may be an irreconcilable fork (with two independent currencies, where each coin that existed before the split can be spent once on each side - the exact problem that Bitcoin was designed to solve).
While a single user can't just demand a change (or non-change) of rules, a large collection of economically relevant nodes certainly can.