The bitcoin URI specifies the following query parameters:
label: Label for that address (e.g. name of receiver)
address: bitcoin address
message: message that shown to the user after scanning the QR code
size: amount of base bitcoin units (see below)
send: used to send bitcoin, rather than to request them
It would be nice to add another parameter called singleUse (or something shorter) to indicate to the wallet that the bitcoin address should not be retained for future use. At bitpay we see a few cases where people accidentally send coins to an old address…it would be nice if the addresses we present aren't retained in the senders wallet to prevent this from occurring. It would also be nice if wallets didn't automatically remember any address unless explicitly requested.
Bitcoin supports a req- prefix for important fields. Simply add req-singleuse=1 to the URI, and non-conforming clients will ignore the URI. Conforming clients will not retain the address for future use.
The problem will not be solved until the Satoshi client implements singleuse, but this will completely remove the possibility of error.