Why can I only texture paint some parts of my model?
There are several issues with your file, all contributing to not being able to paint on all your model:

Materials

The material that is displayed in the viewport is only applied to a few of the faces in your model (the ones you can paint on). Go into Edit Mode, select all faces in your model by pressing A once or twice, select 'Material' in the list of materials and click Assign in the material panel:



Based on your specific file, the object should now be black.

Normals

Still in Edit Mode we can address the second problem.

Some of the faces in your mesh are inside out. This is due to having internal faces inside your model, which confuses Blender into not knowing whether a face is inside your model or out. A quick fix for this is to open the Properties panel in the 3D View (press N to open it), navigate to the Mesh Display panel, turn on Face Normals (the cube icon) and increase the size a bit:



This displays the face direction in the viewport in the form of a line coming out of the centre of a face. The 'direction' a face is pointing is called its 'Normal'. Any faces that don't have a line coming out of their centre are inside out.

The faces I have selected here are inside out:



Select them, press Space and search for 'Flip Normals' and press Enter. Their 'normal' direction has been flipped and they should now have lines coming out of them showing the direction they are facing (outwards). The lines were there previously, but they were pointing inside the model.

Face Selection Masking

The third problem is that you have 'Face Selection Masking' enabled in the 3D View header, meaning only faces that are selected in Edit Mode can be painted:



Either deselect the 'Face Selection Masking' option or select all faces before starting to paint.