I'm reading bitcoinj examples, and noticed this: "PingService .... sits on the network and when it receives coins, simply sends them right back to the previous owner, determined rather arbitrarily by the address of the first input."
What does this mean? What do I do to get the previous owner of the coins I receive, with certainty?
If that person that sent payment to the Ping Service using a hosted (shared) EWallet, that "return" payment most certainly WILL NOT go back to the intended recipient. With a hosted (shared) wallet the Bitcoin address used for sending a withdrawal is not tied whatsoever to the account of the party requesting the withdrawal. That's why SatoshiDICE has a "Warning: please read first" on their site.
BitLotto maintains a list of clients that are valid (see "BitLotto compatible software"). It includes Bitcoin-Qt/bitcoind, Blockchaiin.info/wallet, Multibit, Electrum, Armory, Blockchain for iOS and Android, Bitcoin Wallet for Android, and others. There is one hosted Wallet that appears to not be shared, and that is Coinbase -- so that might be one EWallet option that would work with this PingService.