I've actually heard that animating the node state is illegal in some states, but it's very difficult to prove and I've never heard of anyone being convicted.
Seriously, though - that's the way you do it. To throw an object you would create a passive rigid body and constrain it to the thrower's hand - at the release point you turn the node state of the constraint to "blocking" and the active state of the rigid body to "on", and the constraint lets go and dynamics takes over - you would obviously have gravity and some other dynamics objects in there as well.
The keyframing of the thrower's arm acts as a 'wind-up" for the throw - changing that or the timing of the release point will affect the way the object behaves in dynamics.
The main thing you have to remember is to set the keyframes in the order I described - turn off the constraint before you turn on the active state - it won't let you do it the other way.