To add to some of the other suggestions above:
Turn off all Previews from View > Layers Column > Preview... those are "live updates" and a waste of processing power. There's actually a better preview for any selected layer/object at the top of the inspector. You can select a layer and click the preview to play it, whether or not the timeline is playing, to preview that later (or group of layers.) That preview cannot be closed — it's always available. [Make sure to pause it again.]
In complex (overly popluated) replicators and emitters, there's a Show Objects As menu at the bottom of Cell Controls. Switch to any of the other options (like wireframe, line or point) until you go to render (or publish.) For emitters, turn down birth rates and Life parameters to speed things up. (You can turn them back up later.) If your Emitter/Replicator objects are animations: turn off Play Frames until you need to render/publish.
In Preferences > Time, turn off Limit playback speed to project frame rate... that will usually get you a few extra FPS even when Motion is bogging down. (YMMV)
While you're at it: set "Time View Updating" to Don't Update.
If you use generators that animate (Caustics, Cellular, Clouds, etc... ) turn the speed parameter down to zero when not "under test".
Turn OFF layers (or groups layers) that do not need immediate attention (backgrounds, emitters, etc.) [Was mentioned, but sometimes there's no chance at optimizing...]
If you're using audio, do NOT use mp3. period. AIF or WAV. [You can use iTunes or FCPX to convert mp3s.] In Preferences > Time, choose: If Audio sync is lost: Skip video frames.
If you're using video, it should be prores and not... anything else. Proxy will give you the best performance, but use what you need (you will need 4444 for transparency.)
If your Shape outlines use Airbrush or Image strokes, loosen up the Spacing somewhat. Tight spacing can slow things down especially if the shape is emitted or replicated. Complex gradients can be turned over to solid color temporarily as well (the gradient settings will be preserved and you can turn them back on before rendering/publishing.)
Emitters are the usual culprit for slowing Motion to a crawl, but it's not just the emitter. It's the complexity of all the objects being emitted (cells.) Sometimes, complexity just means "how many" items there are at any given time. Other times it means how complicated it is to render each one (outline-airbrush/image, drop shadows, glow, effects, etc. etc.)
There's two further little tricks to help speed up overactive Emitters, but they will cost you 3D space. 1) to the group the emitter is in, set it to 2D and check Fixed Resolution. 2) you can leave the group as "3D" but check "Flatten". These steps will be very much like baking the emitter without the exporting. For 2D Fixed Resolution: Motion simply will not draw outside the boundaries. Otherwise, normally, Motion will render everything whether you see it in the canvas or not.
None of these suggestions have any guarantee at all. You can grind Motion to a standstill easily and at any time. If that happens, it's a pretty good indicator that your project is too complex, not only programmatically, but also from a design standpoint as well... I have a student (for Motion, not design, unfortunately) who is going to buy a new Mac Pro rather than scale back his "design considerations" that I keep trying to talk him out of ([design, not the mac] a lot of emitters of images, layers of video with odd blending modes)... His frustration level might decrease (mine will probably be the inverse) but the Mac Pro isn't going to make his projects any better and I'm sure he'll just saturate it with more of what he's doing ("wrong" [matter of opinion]) now. [Okay, that's probably not at all helpful...]