According to this article Instant Transaction Fraud: An Explanation, SatoshiDice required all incoming transactions to include fees. How do they do that? I assume that they check the “fee” data from the gettransaction() call to the Bitcoin API. But what happens if the user does not include a fee? Does SatoshiDice reject the bet and send the bitcoins back?
They simply do not process transactions they receive without a fee. The sender loses their coins to SatoshiDice if they make this mistake.