An approach I've proposed in another posting was to have a distributed application that gives people 'tasks'.
A task would be to walk a few minutes to meet another randomly selected person at a specific nearby location (GPS or land-mark based, so you can find each other) within a certain time limit, and exchange keys you were given to prove that you met that person at that time and place.
After meeting maybe 3 people (with a few fall-back opportunities if the person you were supposed to meet is a no-show), your task is complete and a solution can be generated that includes the collected keys and other information needed to verify that the work was done.