I have a feeling SharedObjects may not be able to hold actual movie clip references and be able to restore them reliably (correct me if I am wrong on this), but you could just store objects with key-data pairs in the SharedObject instead of just the frame number alone. Or if you have an unknown number of frame numbers (and movie clips) to remember, store an array of key-data pair objects and loop through them when it comes time to load.
Example of a way to store the data for each clip:
var someClip:Object = new Object();
// some id that refers to the clip (maybe an array/dictionary index)
// (or try replacing with the actual reference to the movie clip to see if it works)
someClip.id ="clipName";
someClip.frameNumber = 1; // the frame number of the clip to remember
Then just store the 'someClip' object into an array in the SharedObject data.
Maybe a more 'compact way' is to do away with having a temporary object and store the key-data pair as just a string with a delimiter. For example, you could just store the string "clipName,1", then when it comes time to load, split along the comma to get the clip id and parse the frame number back to an int.
Or I guess you could also store the frame numbers in a clip id index'ed dictionary and store that in the SharedObject data (as it may save the int parsing step on loading).