It depends on you, the buyer, and the amount of money that is involved.
In generall, the seller should learn as much about the buyer as possible and if anything seems odd, then call him on it or walk away from the deal. If you think you can trust the buyer, then you set a price and the terms. If it's a lot of money, then you would want to use Sedo or another company or one that offers an escrow service that protects both parties in a sale. There are fees involved, so it's best if you can avoid that. I think the fair thing to do is split the fees, but if you're making a killing on the sale you may just want to pay for it yourself. After all, the buyer may want to more from you again in the future....
In my purchases, I have always paid for the domain first. The seller then either "pushes" the domain to my account, or they provide the EPP or "AUTH code" so that I can transfer the domain to my account. I have to pay the transfer fee, but it adds to the lenght of the registration time, so I don't really lose anything. For the transfer, the seller MUST confirm the transfer or you don't get the domain.
The main thing for both sides is to get a good idea of the person you are dealing with and not jump to conclusions if there is a delay or problem. I've had problems with transfers in the past and it was just something I had to have patience with and it turned out ok.