Why is the boolean modifier not working with my model?
It's a common problem with Boolean operation in blender; it won't work if there's incomplete or bad geometry. The problem is, the boolean is a prime culprit for CREATING the bad geometry. 

Ensure your meshes have no loose geometry, remove doubles and dissolve messy faces/unnecessary vertices. Really inspect both objects before using Booleans.

By turning on surface normal lines you can spot weird geometry a little easier, if the line isn't quite centred, something is probably wrong.

I've heard that combining the Boolean modify with a solidify modifier creates better geometry.

I've highlighted the areas of concern - there's probably more.
Lots of unnecessary vertices.
Two faces ontop of each other (pairs of blue lines)
Face normal pointing out across the surface from the vertices.


And inside the oval, you've got some faces that don't have normals, so they're a bit bonkers.. See second picture.

Everything should be neat shapes, quads or triangles preferably.

I feel for you, it's not nice when it happens. 



Apart from manually dissolving bad faces, snapping unwanted vertices to existing vertices and then 'removing doubles', this post explains some of the problems with non-manifold geometry.