It could be made so that an account that has a transaction in the current block is disallowed to forge the current block -- if the account forges the block and has one or more transactions contained in it, the block will just be rejected by the peers and the next account in line gets the opportunity to forge.
I had thought about that also and then decided I didnt like it - I dont like the idea of preventing transactions at all. Some things are just going to be mission-critical and the idea that you can be blocked out would be bad for NXT as a currency. I say just let the transaction go, but you still pay the fee. The fee just gets distributed according to some algorithm that uses accounts that paid fees from the past few blocks as candidates to receive the fee. It would be a cool random way to receive NXT that also rewards people who sent transactions.
So maybe if you wanted to send a transaction in your own block and you set a fee of 1 NXT you would be allowed to do this - you would just also be forced to also include a sendMoney transaction in the amount of that fee (in this case 1 NXT) to an account that sometime in the past 100 blocks paid a fee for something (if it paid a fee then the passphrase for that account is known) to send a transaction. It could not be arbitrary - it would have to have some set algorithm that would be followed to choose that account - that way it could be enforced.
With transparent forging, lets face it, many people are going to get free transactions.
A block forger could even choose to not send ANY transactions except its own, a block chock full of only his own transactions, and do so for free while ignoring everyone elses transactions...[/i] Do we want this behavior? May be a good idea for us to discuss this more.
And actually, I think similar logic could be used for a fair voting system.... let me think on that a bit.