How do I remove imperfections caused by the subdivision surfaces modifier?
The imperfections in your model are mostly caused by faces with more than 4 sides (n-gons).
For an optimal subdivision surface calulation, you should try to use only 4-sided faces (quads). Triangles may look strange in some situations, but n-gons are smoothed pretty unpredictable.

You can find all n-gons in your mesh by selecting a quad, pressing Shift+G, choosing Polygon Sides and changing the Compare setting to Greater. Keep in mind that the first quad is still selected.


You can see that these are exactly in the most problematic areas.

In order to create quads from n-gons, split them using the knife tool (K). You can combine triangles by pressing X and coosing Dissolve Edges.

I also added a few edge loops to get this result: