Your going to hate this idea, but I swear it works. I potty trained my son with it and so did my best friend with hers. Throw away the diapers for the daytime. Buy some training pants and plastic covers for them, you can get them at wal-mart. Put him in them when he wakes up, he is four so you can explain to him that he is to go to the bathroom and use the potty when he needs to go. When he doesn't do this and he won't at first obviously, leave him in his wetness. Hide the diapers up high for night time use. He won't like being wet for a couple of reasons, one he is wet and cold, keep the air on. Two, he can't get on any furniture, he has to stay in the floor. If he is too wet and you can't handle the idea of him running around like that for too long, take him into the bathroom and put him in the tub. Just tell him that your going to give him a quick rinse since he pee'd himself. Now I know this next part sounds terrible but it will work eventually. Turn on the cold water and wash him waist down with it. He will probably hate it. Explain that when you pee your pants this is what happens, you have to be washed with cold water to get it off. Now if you can bear to do this to your baby, it should work after a bout a week or so. Mine quickly decided he no longer needed his diaper. Also, give him a potty to use if you have'nt already. I bought a video for mine too, he really liked it and it kept him motivated.
He is testing your authority!
Throw away the diapers and discuss this with your child.
He is DEFINITELY old enough and ready to understand where to go when the urge strikes him. Tell him that wearing diapers at his (grown up) age is unacceptable.
If he makes a mess - make him clean it up - and don't help him!