Bitcoin transactions do not have a well-defined "from" address. Each transaction can have several inputs, each of which has potentially an identifiable address it was previously sent to. Those addresses may or may not be under control of the sender of the funds.
If you need to do refunds, ask people for a refund address.
If you need to identify individual payments, give a different (unique) receive address for each.
If using any normal client, and the payment is not multisig and not coming from a website like MtGox, any and all of those inputs are addresses controlled by the sender. They must be, otherwise the sender would not have been able to issue the transaction. Can anyone provide a counter-example?