It is very simple using the commandline interface and prototxt modification. Caffe by default attempts to load weights for named layers from a given caffemodel file. Easy to explain on an example: let's assume you trained a network with layers "a", "b", and "c" and you want to load weights for layers "a" and "c", leave layer "b" intact but add a layer "d" instead. Write your new proto like you normally would, but rename "b" to, say, "b_", and add definition for "d". For training your new model, supply the new proto and the trained weights from the old model. Caffe will encounter layers "a" and "c", look for the same layers in the caffemodel and, having found them, attempt to load their weights. For "b_" and "d" no counterparts will be found, so these will be initialized according to specification in your proto.
This will only work however, when your new model's layer "a" has the exact same parameter shape (eg. kernel size and count) as the one in the model you're loading from - otherwise caffe will complain and crash, and you will have to resort to net surgery to transfer those weights.