I propose that a hard fork for transactions. An additional field miner_filters to be added to transactions. A miner-filter contains an address & accept/deny value. The address part of the miner-filter corresponds to the address in the coinbase transaction. A transaction can only be included in a block if a block passes the transaction's miner-filters.
At the moment there is concern over miner centralisation. Hopefully, this proposal will provide a very simple method for users to express approval/disapproval directly towards miners. As miners become more dependent on fees this mechanism will become more relevant. A transaction that excludes a specific miner will mean less fees for that miner. Conversely, a transaction that includes a specific miner will more fees for that miner.
Mining Pool has over 50% hash power
In the following miner-filter could be added to transactions:
"address": "<Address of miner>"
This miner filter could be voluntarily added by a user to their transactions and the mining pool would be unable to include the transaction in any block that they generate.
Large miner is attacking the network
The network maybe under attack by a miner with over 50% of hash power that keeps changing their address. Therefore the following list of miner-filters could be added to transactions:
"address": "<Address of trusted-miner 1>"
"address": "<Address of trusted-miner 2>"
"address": "<Address of trusted-miner 3>"
This transaction could only be mined miners in this list.