The syntax you described is (almost) correct. When using loadModel, Panda3D will cache the model in memory, so that the model doesn't have to be reloaded from disk the next time you use loadModel.
If you wish to free up this memory because you no longer need this model, then you can use the unloadModel function with the return value you received from loadModel, which will release the model from the in-memory cache. However, note that it will not actually remove any instances of that model that you have in the scene graph - you will still need to detach those.
If you want to remove a model from the scene graph, then simply calling removeNode() will do. Orphaning a section of the scene graph like that will cause it to be garbage collected, given that you drop all references to it (and there are no circular references.