i) Delay sending of bitcoins, to give banks enough time to report stolen funds. Considering it took ~10 days for UBank to tell me stolen funds had been sent my way, this doesn't sound feasible.
ii) Only serve people who have successfully made orders in the past. This works for old users, but doesn't help legitimate new people.
Have you considered one of the things I proposed in this thread?
For example https://bitcointalk.org/index.php?topic=82045.msg906946#msg906946
1) any new bank account from which a user wants to deposit must be validated
2) user validates the account by posting the account number in a form in his account on BitPiggy, and they YOU send him a small (like 0.17 AUD) transfer to this account with text in the description: "Use this code: PJ9D43ZR to allow funding your account on BitPiggy.com from this bank account"
3) when user receives the transfer from you he enters the code on your website
4) then you wait 30 days to give time for the real account owner to notice the transaction on his bank statement in case it was done by a cracker
5) after 30 days it becomes validated and the user can deposit from that account later on instantly
Please do not use any "B" methods - it creates uncertainty for legitimate users, and will inevitably lead to becoming another Paypal-like nightmare, where you can first deposit funds, and then are locked, with many false positives.
Once funds are credited to the exchange they should be deemed clean, and if you are not sure a deposit is legitimate (i.e. has been done by the real account owner, just return it to where it came from.