Taking a step away from the dungeon and into the city, a very satisfying campaign to play is a campaign where the heroes are struggling to overcome some sort of opposing force through interaction with the setting.
Examples might include overthrowing an evil ruler, defeating a cult to a god of destruction, abolishing slavery in the empire or any of a million other causes that the characters can get entangled in.
While a campaign like that does not require additional rules, it can ease the DM's workload by having a structure in the background. It can also help open up the campaign to the players ideas, rather than leading it down a predetermined track of plot points.
When setting up "the threat" in the campaign, you need to establish how many levels of resistance the threat can present. This will basically determine how long the campaign will be, and how tough the enemy is to overcome overall.
A minor threat may have 1-2 resistance, while an epic enemy that could take a lifespan to defeat could easily qualify for 5-6 resistance.
At the beginning of the campaign, the DM rolls a D6 for each point of resistance and records the rolls.
When the characters decide to undertake an action that will weaken the threat, the DM selects one of his remaining threat dice.
Once the objective is achieved, the players roll a D6, and if they score higher than the threat die selected, the die is eliminated. This permanently reduces the resistance of the threat, which should be reflected in the setting.
As an example, when fighting to overthrow the evil king, the players undertake a quest to clear a nearby dungeon, so that the villagers will join the rebellion. If the players roll is above the threat die, then they've stepped closer to achieving their main goal.
In this case, the villagers might form an army, or start guerilla activities against the evil kings soldiers.
If the roll is equal to the threat die, that particular threat die is reduced by 1, but remains in the campaign. This represents the enemy being weakened slightly but not significantly.
The villagers may begin sabotaging mail routes and supply routes, but they aren't able to directly challenge the villains power base.
If the players roll is under the threat die, then the enemy remains stalwart. In the campaign, this usually means that the enemy makes counter moves.
The villagers rise up, but this leads to more soldiers in the streets, hangings and martial law.
If the players performed a particularly dramatic task, they may get two dice rolls from that particular task. These tasks should be fairly momentous, and infrequent.
When the final point of resistance has been overcome, the ground has been paved for the final confrontation. This should generally involve something pretty dramatic, whether it's storming the villains castle, or leading the free man of the Valley to sign the documents of freedom and solidarity.
A few notes and pointers:
Give plenty of adventure locations and let the players get stuck in. Let them determine how they'll go about overcoming the threat, and go from there. You can throw up some obvious solutions, but let them be creative.
If the resistance has not been reduced to zero, the threat cannot be eliminated. Be creative with this. If the heroes go in and kill the evil king, that's certainly worth a roll to reduce resistance, but maybe he has an evil son, maybe it was a clone, maybe he comes back as a lich. Be creative.