We had the same issue with our 3 1/2 year old son - he adamantly yelled "NO" if we asked if he needed to go, and 5 minutes later would go in his pants. We had been struggling for about 6 months trying to get him to dislike being dirty and to get him to go.
We had a huge breakthrough about 2 months ago, and he's been 95% trained (even at night!) ever since. We prepared by trying to figure out when your son goes according to his schedule. Also we bought lots (like 20 pairs) of underpants that he'd be excited about (ours are Toy Story 3 and Thomas train pants). You might want to get some of the plastic covers (I think Gerber makes them) for when you're out & about. Don't use pull ups or use diapers at naps, and I have to admit, we made a decision that if he #2ed in his underpants, we'd just throw them away vs. deal with a big cleanup mess. It's so not worth it! Our breakthrough week came when my husband and I both had vacation and we made it potty training week. We had a potty chair that we took from room to room so it was always close by. First thing in the morning, we put him in front of cartoons on his potty for a #1. Then about 15 minutes after breakfast, it was back on the potty for a #2. Then we were good to go for about 2 hours of activity, and we put him back on the potty for a #1. Then lunch and nap time. Immediately after nap it was back on the potty... and so on. We put it in front of the TV, or with books, etc. so it wasn't isolating. And we made deals with him if he said no - example: Everybody has to go to the potty before snack time. I can have snack, because I went to the potty.
It also helped us to set a timer - it sounds ridiculous, but we set alarms on our cell phones to go off every 1.5 hrs, so we wouldn't get distracted and not take him.
The other thing we found was that if he didn't drink anything for about 1.5 hrs before bed, he slept through the night and doesn't need diapers.
Every kid is different, so don't stress too much! But hopefully this will translate into success for you too! Best of luck!