Oops, ignore this post. I was not logged into the portal. Once I log in, I no longer get the ReadOnlyException.
But that brings up an interesting point. What is the preferred way to deal with this situation? That is, if my portlet has an edit mode, and the processAction method modifies preferences, then what should be done if there is noone logged in? Preferrably, I would like to prevent the user from even selecting edit mode. Is that possible? I could, of course, handle the exception within processAction and then continue on, but that doesn't seem to be the best way to handle this. And I haven't seen anything about this in my reading on portlets.