Everyone has given a lot of good advise. I would add one thing, which may seem very subtle, but for me at least it helps a lot with people who can sometimes be viewed as "tough crowds", difficult spectators, or even hecklers.
This one thing is a small paradigm shift in
your thinking that
could make your magic more enjoyable (for both yourself and your spectator) and less confrontational.
When I first started out I never understood why people became jerks when I would perform for them. I mean, I spent all of this time and effort to perfect what
should appear to be
magic and I'm also "going out on a limb" to be entertaining (all for their benefit and amusement) and even the nicest of people start going out of their way to try to mess up the effect. Why is that?
Then I realized, "Oh... I'm coming across as a show-off, know it all, who is trying to fool people." Nobody likes to be made a fool of, so they will try to sabotage your efforts, just to prove that they can be as smart as you, or that they are not fooled. Often these people blurt out their own answer to the little bit of impossibilia that they just witnessed, which sometimes is the method I was using, and sometimes not.
While these people are not ideal to perform for, I completely agree with James' post about finding a way to continue to have a good time with these people if possible.
A long time ago, I use to train in the Japanese martial art called, "Aikido". Roughly translated it mean, "the way of spirit harmony". A lot of Aikido involves "going with the momentum of your attacker and actually adding to their attacking force, so you can unbalance them and ultimately prevail".
Taking this idea and applying it to magic, I would say, "when being attacked, don't attack back... Instead join with your attacker and use their attacking energy to fool them anyway."
One way is to remove both you and your spectator from the effect. A good example of this is Michael Ammar's handling of "The Virgina City Shuffle" (Easy to Master Card Miracles vol. 5). In Michael's handling he tells a story about how he was fooled by a street hustler. In describing how you were fooled you fool your spectator in the process. With two card monte, you may be able to do something similar just by changing your patter.
Another way which is useful when you hear, "there is no such thing as magic" is to not fight it, but instead go with it... "Your right! If I could do this for real, I wouldn't be here now...
But if I
could really do this, it might look something like this..." (...and continue on with whatever effect you were doing...)
If you can tell that your spectator is the type to blurt out their explanation, so they can be the big shot who isn't fooled, don't fight it. Often saying something like, "Hey I bet you would be good at performing magic! You have a keen eye, so this probably won't fool you, but the other day I showed this to so and so and they thought it was real magic... Hear let me show you what I did." (...perform the effect...) "Now I know I didn't fool
you but so and so completely freaked out."
Often is can be useful to mix in some "sucker" tricks. Two that come to mind, since I previously mentioned Ammar is "That's it" and "Play it Straight Triumph". Both of them have the strong element of the Magician messing up (which is exactly what the heckler wants) however with both you end up coming out on top in the end. Again, the important thing is to not "retaliate" against your spectator for their natural reaction of not wanting to look foolish, or to be fooled.
If all of that fails and they are still being difficult, just thank them for their time and explain that
you had a good time and greatly appreciate the opportunity to get in some extra practice.
I hope this helps a bit,
-ThisOneGoesTo11