I'm looking for a way to allow users to pay different fees based on different version of the block including the transaction.
E.G. a transaction that is valid only if it is included in a block with version 3 but is invalid if included in a block version 2 or 4.
OR
a transaction including different fees if included in any block or in a specific block type.
0.2 mBTC if v3
0.1 mBTC if not v3.
Is there any way to do so?
Nope. Not possible.