Choices and being firm but gentle are great suggestions. I would also recommend reading "Happiest Toddler on the Block" or getting the video. Using the techniques outlined in the book have often helped me diffuse many of my DD's tantrums and difficult moods. And it's also given me insight into how to handle her when I can feel she's starting to escalate.
To summarize, you're supposed to speak to your toddler in short, repeated sentences and reflect what he's feeling. Once you do that, you follow up with your explanation / alternative / distraction. So, it would go something like this. Say your child is getting upset because he wants a toy. You'd say something like this:
"You want that toy. You want it. You want. You want it. You want the toy. But Bobby is playing with the toy now. When he's done, you can take a turn."
When I started doing it, I felt really awkward. But once you get the hang of it, it gets easier and more natural. And it starts to change the way you interpret your child's behavior. For example, last week DD1 kept walking up to DD2's bouncy seat and kicking it. I kept telling her sternly, "Stop! Don't do that! Be nice to your sister. Blah blah blah." And then I thought about it and realized I could handle it a little differently. The next time she kicked the seat I said, "You seem really mad. Are you mad? Are you mad at your sister?" And DD1 said, "No, I'm not," and she stopped. Just like that. It was like having her feelings identified and acknowledged helped her get through them.
Oh, and I can totally identify with having relatives who think spanking is the answer. We've just told people that we aren't a hitting family and it's not right for us. I'm sure they disapprove, but they don't really have a choice other than to accept it.
Me (35), DH (35), DD (3), DD (born Jan. 6)