Do you mean it's not released immidiatly (IE. sound keeps playing, or some other kind of annoyance)? Garbage collection does not run right away, but you can fake it by loading a blank SWF after you unload. The ideal solution would be for your loaded SWFs to handle their clean up appropriatly... but unforutnatly we do not live in an ideal world.
While running it in the FlashBuilder profiler I do hit the garbage collect a
couple of times and let it run a while before taking a memory snapshot and
it is still not released.
Read the doc on unloadAndStop. It does not break all memory references,
especially ones generated from running AS code.
So, what does break the references? Even if we load another SWF the memory seems to stick around... The back references are all Accessibility things...
You have to null out enough properties or otherwise remove references to the
objects that you want to get rid of. That might require calls to
removeEventListener. The profiler should show you what is holding on to
things, but don't get fooled by cycles.
If you turn off accessibility, does your problem go away?