I don't know of any existing apps which are useful for creating cutscenes but there are a number of techniques which will ease the process (I've been thinking for some time about writing a tutorial:)
First, do some planning. I recommend storyboards but whatever works best for you, do that. This is important so that you know exactly what you are creating. If necessary block out the cutscene in a simple animation tool just to tweak everything and really nail exactly what the final cutscene will look like.
Now create animations for all the characters in the cutscene. This step may or may not be necessary depending on the animations used in your game and in your cutscene. If for example the player's character bends down in your cutscene but there is no bending down animation for your game then you will have to add one to the character. Note that, for memory reasons, if there are a lot of one-time-use animations (ie. a movement which only happens once, during a cutscene) you may want to have a separate copy of the model just for the cutscene. For really complex animations/cutscenes you may want to simply animate the entire cutscene in an animation tool and save the character out to play that single long animation sequence; in this case you will still need special cutscene script-data and playback code because characters need to be placed in the scene, the camera has to be controlled, and sounds must be triggered.
Now to script out the animation/generate the cutscene data. For this part, depending on how complex the cutscene is, you may want to write a custom scripting tool or a custom exporter for an existing animation tool. The tool needs to be able to pick and place objects, scrub the timeline, play individual character's/object's animations, and tag/keyframe stuff like where to place the object at various times and what animation to play when. Oh, and don't forget sound; also have tags for what sound to play when. Oh oh, and camera control; you need to tag/keyframe where the camera is at various times. Then save the script as a file which lists data used in your code to play the cutscene. If you don't write a custom tool you can simply write the script file by hand and use an existing animation tool to work out object placement and animations to play vs. time.
Now for code. There are many ways to code the cutscene; the approach Malice suggests is certainly one (fill in the data when you load the scene using the information from the script file.) The main thing I would add is to put the entire cutscene in a separate function and have everything necessary for playback within that function. That is, define local variables used during the animation at the top of the function and have a complete rendering loop (WaitTimer is useful for simple timing code) so that to play the animation you simply call the function. In other words a cutscene playback function something like this pseudocode:
Function PlayCutscene([cutscene name])
[load cutscene script, objects, and sounds]
cutsceneTimer=CreateTimer(30)
While [not finished]
WaitTimer(cutsceneTimer)
[increment the scene]
UpdateWorld
RenderWorld
Flip
Wend
[free cutscene objects and sounds]
End Function
Then whenever you want to play a cutscene you just call PlayCutscene("cutscene1.csn") with "cutscene1.csn" being the filename of the cutscene script to load.
***
If I were to write a tool to help do cutscenes would people purchase it?