D.,
I know it is hard to stick with a punishment for your 4 yr old son, but you are really doing him a favor by doing so. When you give him a punishment and stick to it, you are giving him peace of mind of knowing that his parents are competent, in charge people, who know what they are doing and who will take care of him. When you let him call the shots, you are sending him the message that you are not confident, that you are 'winging it' and that HE actually is in control of the situation. Think how you would feel as a little boy to feel that your parents do not know what they are doing. He may not like the punishment, but he will like the feeling of having confidence in his parents.
As for the time outs, I used them with my three boys with some success. You absolutely must enforce the time out, stay there with him and use a timer that he can see so he knows with confidence how long he must stay there (we did one minute per year of age.).
I find, however, that a more effective way of dealing with children, boys in particular - I have no girls and cannot speak to them, is to figure out your child's "Currency" and use that to help your child learn consequences for actions.
The currency CONSTANTLY changes, so it does force you to be 'in touch' with your child - but that is a good thing. You need to figure out what your child is passionate about at the time (ie, Thomas trains, a video, legos, Vsmile, Nintendo when they are older, etc.) and threaten to remove the privilege of that currency for bad behavior.
This is ALSO hard to follow through with - it's no easier than the time outs, but it is also effective and is actually PREVENTATIVE of bad behavior.
For example, if we go out to dinner we can tell the boys, "If you do not mind your manners at dinner tonight, you will not be allowed to play Nintendo this weekend." If they start acting up during dinner we remind them that they stand to lose that privilege of video games on the weekend.
As I said the currency chances, especially with a 4 yr old., and you must follow through with the punishment - which can be hard also. We do not like to have them lose video games on the weekend because they love them so much! And we love them. But you are reinforcing that good behavior yields good things and bad behavior yields bad results. That is the way the world works, and that is what you must teach your son.
We have had times when there was no currency that we knew of or it had changed without our knowledge and resorted to time outs. They do not like the immediate removal of freedom, so time outs are effective too - you are taking away the privilege of freedom. It's immediate and effective as well, but I find not long lasting. 30 minutes after they are out of time out they may act up again.
Also remember a child that is typically well behaved may just be tired or hungry and not know how to verbalize that to you. If your son is acting up, try to think about if he might be tired or hungry or otherwise uncomfortable. Sometimes plain understanding and love is what they truly need.
I hope you find this useful. Please try to think of 'punishment' as a gift you are giving to your child because when he becomes an adult he will not be able to do anything he wants. He needs to live within the confines of society, but being raised to understand this will make it easier on him and second nature. He won't look at social 'rules' as something bad, but as something that allows all of us to live peacefully together with respect and harmony.
Good luck and congratulations on all your hard work thus far in raising your children!
V.