Personally, I feel that the idea of a non-violent protest has been co-opted in the modern age. For example, the protests before the start of Op:Iraqi Freedom were large, and well organized.
A lot of people doing puppet shows, “drumming for peace”, more tie-dye than had been seen in decades… these things are, imo, counter productive.
When I protested in High School against state government cuts to the education budget, we were all told ahead of time by the organizer to dress well, and if we had to have signs, make sure they were legible and not covered in curses.
I think 5000 well dressed and orderly people make more impact than 10000 drummers and street artists.
Plus, they already know you’re opposing their policies. Your ability to effectively subvert will be severely curtailed by having your every move watched. OTOH by quitting you at least temporarily deprive the organization of a trained and experienced member who has already been working on the matter. Meanwhile, openly turning on the boss and attempting to bring him down, rather than just walking away, labels you a troublemaker that “will never work this town again”.
On the World stage, who made the more successful protest: Gandhi or Bin Laden?
It’s true (as others have said) that well-funded lobbying is pretty influential on politicians. (I believe that elections in the US use the most money of any country.)
But if you don’t have that cash, a well-organised non-violent protest is much better than bombing.