How can I tell if a bone property has a keyframe on the current frame using python?
There is no easy way, but you could extend the Object type by a method:

import bpy

def is_keyframe(ob, frame, data_path, array_index=-1):
    if ob is not None and ob.animation_data is not None and ob.animation_data.action is not None:
        for fcu in ob.animation_data.action.fcurves:
            if fcu.data_path == data_path:
                if array_index == -1 or fcu.array_index == array_index:
                    return frame in (p.co.x for p in fcu.keyframe_points)
    return False

bpy.types.Object.is_keyframe = is_keyframe    


# TEST
ob = bpy.context.object
pbone = bpy.context.active_pose_bone

# True or False 
ob.is_keyframe(20, pbone.path_from_id("location"), array_index=2)


frame can be int or float, 20 will match a co.x of 20.0, but not a subframe like 20.1. If you want to check for full frames, use round(p.co.x) in the is_keyframe() function.

Talked to ideasman_42, and he may check on adding a native method to retrieve F-Curve and Keyframe objects more easily.