Das mit dem Javascript stimmt schon, also das man es braucht um bei den Sponsoren vergütet zu werden. Hier gibts ja aber leider das Firefoxaddon noscript mit dem man z.B. für alle Sponsorennetzwerkurls Javascript deaktivieren kann. Für die Bettelseite ist es dann zwar aktiviert aber für die Sponsoren nicht und so bekommt der User die Vergütung fürs Betteln der Betreiber aber keine Lose vom Sponsorennetzwerk. So gesehen ist es also eigentlich egal wie man die Zeit runterzählt. Wenn mans mit JS macht filtert man halt noch nen paar User raus die JS generell deaktiviert haben.

Zu deinem Code hab ich auch noch ne kleine Anmerkung.
Du sollstest die Session nach Benutzung wieder löschen.
Warum?
Du frägst ja ab ob $_SESSION[betteldelay] gesetzt ist mit isset()
Wenn ein User jetzt ein zweites mal auf die Seite kommt ist die Session immer noch gesetzt vom letzten mal. Der User könnte also gleich die zweite Seite aufrufen und würde vergütet (sofern er nicht mehr im Bettelreload ist)

Also einfach noch zwischen: if ($delaycheck) {
und } else {
irgendwo bei bilanz_neu ('-',$bettelsumme,'Betteln');
ein unset($_SESSION[betteldelay]) einfügen.