You can wait for a physics collision event within a task function. Here's an example:
	Code:
	import viz
import viztask
viz.go()
viz.clearcolor(viz.SLATE)
ground = viz.addChild('ground.osgb')
ground.collidePlane()
ball = viz.addChild('beachball.osgb',pos=[0,3,6])
ball.collideSphere()
ball.enable(viz.COLLIDE_NOTIFY)
def collideTask():
	
	# wait for spacebar to enable physics
	yield viztask.waitKeyDown(' ')
	viz.phys.enable()
	
	# wait for collision event
	d = yield viztask.waitEvent(viz.COLLIDE_BEGIN_EVENT)
	
	if d.data[0].obj1 == ball:
		collisionPoint = d.data[0].pos
		print 'the ball collided at',collisionPoint
	
	# wait 5 seconds
	yield viztask.waitTime(5)
	print '5 seconds elapsed'
viztask.schedule( collideTask() )
 Or, from within the onCollide function, you could use 
vizact.ontimer2 to call default() after 5 seconds.