Ok, I don't know if I understand your problem exactly but this is how I am trying to handle this. I don't know either how you handle your movement.
But to the point. Whenever an object is moving, I generate an 'action'. I put this action in a ActionQueue, and every frame I execute all the actions in the queue. The key to my system is that there can't be a 'up-movement'-action and a 'down-movement'-action(like gravity) at the same time in the queue. So when I generate a gravity-action, I first check if there's already a jump-action, if yes: I don't do gravity, if no, gravity is fine. So instead of having two separate gravity-speeds, I have to gravity-states: 1) Full gravity, because an object is in the air and is not jumping and 2) no gravity, because either the object is jumping or it isn't on the ground.
I hope this makes sense ;).