Can F-Curves be used to define interpolation between keyframes? What I'm trying to do specifically is animate a punch. With the default Bezier curves, the interpolation between the "wind-up" and "contact" poses gets eased in AND eased out. This effectively makes it appear that the punch is being pulled. The character accelerates into the punch just as he should, but then begins to slow again right before contact. I'd like to have the interpolation such that he eases in and then continues to accelerate through. In principle I know how to do this with the graph editor, but this action involves a shift in balance so almost every bone in the body changes position between poses, and I really don't want to tweak the graphs for each property on each bone individually. Is there a way to fine-tune keyframe-level interpolation in Blender? Perhaps by animating a single property that represents a 0-1 weighting between poses? I feel like I could probably hack something together with drivers, but I'm really not sure how to do that in the context of poses and figured there might be a better way anyway. What's the proper approach in a situation like this?

EDIT: One solution I've found is to use a Python script to automatically position the left handles of all selected keyframes to sit on top of their respective control_points. This basically achieves the effect @cegaton was suggesting. 

import bpy

C = bpy.context.object

for fcurve in C.animation_data.action.fcurves:
    for kf in fcurve.keyframe_points:
        if kf.select_control_point:
            kf.handle_left = kf.co[:]


I'd consider this a quick hack though and not really resolution to the original question. I'm still wide open if anyone has any other ideas.
Maybe using the Breakdown Tool could help you to find the right curve / pose quicker? It is one of the In-Between functions Blender has, see the section In_betweens here: https://www.blender.org/manual/de/rigging/posing/editing.html.  The workflow would be like this:

Set start and end keyframe of your pose. So the moment when the punch starts and the moment after the hit. Then scrub to a frame in between the two. With the very sophisticated example here it looks like this:



If I take my example, the X F-Curve should have a keyframe value lower than what it currently has. Or in other words, the pose should be closer to the starting pose, than to the ending one. The breakdown tool allows you to do just that: In the 3D Viewport, hit Shift + E, and then move the mouse left and right. The extent of your 3D Viewport acts as a slider, so if you move the mouse to the very left, you're at the starting pose, on the right at the ending pose. Your model will now deform either towards the starting pose, or towards the ending one. In your case, you wanna go closer to the starting one. After clicking, you can add a keyframe for this pose (or if you use Auto-Keying, that keyframe has been created already):



It's your choice now if you want to set the end value to vector (can be done in Dope Sheet or F-Curve Editor:



If you're not happy with the pose, go to the same keyframe and use the breakdown tool again.