Rob Sayre just checked in bug 411365, which adds some global functions to JS for starting and stopping profiling using Shark on OSX. This makes it extremely easy to get a clean profile for a specific testcase, especially if the action is deep in the UI or otherwise hard to isolate. Shark is pretty awesome overall; it's by far the best profiling tool I've used on all three of our main platforms. The oprofile/syspof based tools on Linux can obtain much the same raw information, but Shark's analysis and data mining tools blow oprofile's tools away. On Windows I've only used VTune, which always manages to disappoint me. There's a lot of functionality there, but somehow none of it ever helps me actually solve problems (unless I was microoptimizing a tight loop at the instruction level or something, I guess).
I think we really need a memory profiler.
Firefox trunk alone is not bad (except for very aggressive caching, I guess fbcache retains a lot of memory), but extensions authors and possibly some webapps would really benefit.