The first thing to consider is why you are punishing a sub, and what you want to gain out of it. Some people tend to think that punishment should be given for enjoyment purposes, either the dom's or the sub's. If you're doing it for enjoyment, then it's not really punishment to a sub, and if s/he thinks that it is then they are much more likely to disobey to get something that they want. If the dom does it for their enjoyment, then calling the activity a punishment can be damaging to the self-confidence and self-esteem of the sub, they will question why they can't seem to please their dom and always need to be punished. Such activity is much better labeled as pleasing the dom, rather than punishing the sub.
A sub should be punished for something s/he did, or did not do, providing that the dom's expectations on the matter have been clearly established. If there were no clear expectations, then the sub should not be punished because the dom is at fault. The sub is a person, and can only do what s/he has been asked to do. It is the responsibility of the dom to make their wishes and desires known, and to punish a sub for their failure is stupid.
What you try to punish is as important as what you do to punish. To use an example, do you punish the dog for pissing on the floor when you didn't let it out for 24 hours? With a person, you can get a much better understanding of why something was done if you talk to them. Find out why they did what they did, and give a punishment that will address why they did what they did constructivey, trying to teach them. I find this helps much more than just a punishment that involves pain.
Another way to look at a punishment is this: for a true sub, the worst possible punishment is knowing that they have not pleased their dom. A physical punishment's true purpose is to provide a methoed of attonement for the sub, as well as reassurance that s/he is still loved, cared for and desired. When seen in this light, the whole idea of punishment becomes a little bit blurred.
When punishing a sub, you should choose something which they don't like, or extremely hate. If they like something, it will not be effective if you try to use it as a punishment, it will either detract from their enjoyment of it, or it will encourage them to disobey again, neither of which is desireable. This means that time and effort must be spent getting to know the likes and dislikes of your sub. (Above and beyond everything you learned in just getting to know them :)
NEVER PUNISH A SUBMISSIVE OR SLAVE IN ANGER!
Doing so is opening the pandora's box of abuse. My personal rule is that I will not even decide, let alone implement a punishment in anger. It clears your thinking, and helps to find a punishment rather than just a reaction