"Spikes" are created when I add a sub surface modifier to my model, even though everything in edit mode seems to be alright
To remove the spikes press  Space  search for "remove doubles" then hit  F6  to open the setting popover and adjust the merge distance to something like 0.03 to merge vertices that are very close to each other. That should take core of the spikes

Your main problem is that the overall topology of your mesh is not ideal for subdivision. For clean subdivision your model should be predominantly quads.

There is a good article on different types of modeling by Gleb Alexandrov that you can view Here