Access Object's Keyframe Data via Python
The following will give you an array of all the frame numbers (as float) where the visibility is True 

fc = o.animation_data.action.fcurves.find('hide')
frameNos = [kfp.co[0] for kfp in fc.keyframe_points if kfp.co[1] == 0]


you can find the previous one from the current with 

start = max([kfp.co[0] for kfp in fc.keyframe_points if kfp.co[1] == 0 and kfp.co[0] &lt; currentF])