In simple words, the detached HEAD state means **you are not checked out to HEAD (or tip) of any branch**.

## Understand With an Example ##

A branch in most of the cases is sequence of multiple commits like:

**Commit 1:**
master-->branch_HEAD(123be6a76168aca712aea16076e971c23835f8ca)

**Commit 2:**
master-->123be6a76168aca712aea16076e971c23835f8ca-->branch_HEAD(100644a76168aca712aea16076e971c23835f8ca)

As you can see above in case of sequence of commits, your branch points to your latest commit. So in that case if you checkout to commit *123be6a76168aca712aea16076e971c23835f8ca* then you would be in detached head state since HEAD of your branch points to *100644a76168aca712aea16076e971c23835f8ca* and technically you are checked out at HEAD of no branch. Hence, you are in the detached HEAD state.

## Theoretical Explanation##
 
[In this Blog][1] it's clearly stating 
a Git repository is a tree-of-commits, with each commit pointing to its ancestor with each commit pointer is updated and these pointers to each branch are stored in the .git/refs sub-directories. Tags are stored in .git/refs/tags and branches are stored in .git/refs/heads. If you look at any of the files, you'll find each tag corresponds to a single file, with a 40-character commit hash and as explained above by @Chris Johnsen and @Yaroslav Nikitenko, you can check out these references.

  [1]: http://alblue.bandlem.com/2011/08/git-tip-of-week-detached-heads.html