On the buying from amazon:
Surly amazon would just have a public address which they declare is theirs. Then when you pay by bitcoins on amazon, after generating a new sending address, you tell amazon from what address you will be sending them payment, they associate that address with your account and send you an email as following:
Dear Customer,
This email confirms that payment will be send from: (sending address) to (amazons receiving address)
product:
date:
order number:
Amazon.
You send them the payment, the transaction can publicly be seen on
http://blockexplorer.com and there we go, combined with the email there is proof and you are still anonymous because that sending address would only be used for amazon orders.