Why do gaps appear in my mesh when I animate it?
Unjoined Vertices

The problem of parts separating from each other during animation is not due to weighting, but rather to the fact that although the mesh looks like it is all joined together, many of the vertices are not in fact joined together. 

For example, in this mesh, the three planes are considered by Blender to be one object, just like all the parts of your figure are considered one mesh, and they look like they are all joined into one piece. However, when you move some of the vertices in Edit mode, you find that some of the vertices of one plane are in the same spot as vertices of another plane, but they are not actually joined/merged into one vertex: 



In this case, you have several places where two vertices are in exactly the same spot, but are separate from each other.

To solve this, there is a tool called Remove Doubles, which merges vertices within a certain very small distance of each other, usually almost right on top of each other. 

You can access Remove Doubles many different ways, but all must be done in Edit mode and will effect only vertices that are selected. So, for your model, I would suggest: 


Select your figure → TAB → select All (A) → W → Remove Doubles


When you do this, Blender will tell you how many vertices were merged/joined together up in the top right corner of the Info header bar:



In your model, there were 878 pairs of vertices that were merged, thus effectively "removing" one vertex from each pair when the two were merged.

So, this joins shut many holes in your figure so they will not come apart when you animate. However, there still are places where the vertices were too far apart for Remove Doubles to merge them, so you have to merge them by hand using AutoMerge Editing.

AutoMerge Editing with Snap To

AutoMerge Editing is an option you can toggle on and off via the AutoMerge button on this 3D View header while in Edit mode:



When enabled, as soon as a vertex is moved close enough to another one, they are automatically merged. 

In order make it easy to get the vertices to move together more easily, enable Snap To Vertex in the 3D View header while in Edit mode:



This will cause any vertex you grab and move to snap to nearby vertices, and with the AutoMerge enabled, they will merge and close one more hole in your figure.

Select Non-Manifold Vertices

However, one of the last remaining problems is locating all the holes in your figure so that you can close them. To do this, while in Edit mode use Select Non-Manifold Vertices via CTRLALTSHIFTM. This will select all the vertices that are part of a hole in your mesh, which you can then start to grab and automerge together:



After you've merged some, use CTRLALTSHIFTM again to find more needing to be merged. 

However, one thing to note is that on your figure's hair, each vertex along the  edge is considered non-manifold and so will be highlighted, but this is not a problem, since the hair is just a flat surface, rather than a volume. 2D flat surfaces (planes) are considered non-manifold, so all edge vertices on a flat 2D surface, like your figure's hair, will always be highlighted when you select non-manifold geometry. Thankfully, though, that's not a problem for your animation.

Tips to Avoid Gaps in Meshes When Modeling

When you are creating a model and you are trying to avoid having gaps in your mesh, here are two tips to help:


Enable AutoMerge before you begin editing. This will reduce the need for Remove Doubles later on
Use Snap To Vertices to make sure your vertices merge easily