The hard way would be to split a prototxt first (e.g. whole.prototxt -> head.prototxt & tail.prototxt) and then instantiate head.prototxt using weights from whole.caffemodel - Caffe will only copy weights from those layers that are present in both the prototxt and the caffemodel. So if you save this model as head.caffemodel, it will only contain the layers from head.prototxt.
But maybe you don't need to do that? As said above, Caffe only tries to import the layers which are found in the prototxt, and if they're not present in the caffemodel, it skips them. So is the explicit splitting of the model necessary?