How can I tell what input address sent me coin? Rather - how does SatoshiDice do it? I know it's not proper format and people advise against it, but how is it technically possible?
You don't.  Bitcoin doesn't work that way.  To identify the sender, you can provide a new Bitcoin address for each payment request and then you'll know from which party the funds were sent as only that party would have that Bitcoin address. 

Some services, such as SatoshiDICE, return funds to one of the inputs in a transaction.  This frequently causes losses however as those sending from a hosted (shared) E-Wallet don't own the Bitcoin address that their payment was sent from.  So returning funds to one of those inputs benefits some party other than the intended user.

Other parties use unique payment amounts to uniquely identify the sender.  For instance, a payment of 1.23 could be suffixed as 1.23000001 to differentiate that from another party that was asked to pay 1.23000002.  However doing that is no less work than simply providing a unique Bitcoin address for the two payment requests.

Planned for a forthcoming version of the Bitcoin-Qt/bitcoind client is a Payment Protocol which might be useful to you as well.