K-Means vs hierarchical clustering
I would say hierarchical clustering is usually preferable, as it is both more flexible and has fewer hidden assumptions about the distribution of the underlying data.  

With k-Means clustering, you need to have a sense ahead-of-time what your desired number of clusters is (this is the 'k' value).  Also, k-means will often give unintuitive results if (a) your data is not well-separated into sphere-like clusters, (b) you pick a 'k' not well-suited to the shape of your data, i.e. you pick a value too high or too low, or (c) you have weird initial values for your cluster centroids (one strategy is to run a bunch of k-means algorithms with random starting centroids and take some common clustering result as the final result).

In contrast, hierarchical clustering has fewer assumptions about the distribution of your data - the only requirement (which k-means also shares) is that a distance can be calculated each pair of data points.  Hierarchical clustering typically 'joins' nearby points into a cluster, and then successively adds nearby points to the nearest group.  You end up with a 'dendrogram', or a sort of connectivity plot. You can use that plot to decide after the fact of how many clusters your data has, by cutting the dendrogram at different heights.  Of course, if you need to pre-decide how many clusters you want (based on some sort of business need) you can do that too.  Hierarchical clustering can be more computationally expensive but usually produces more intuitive results.