As far as I can tell, during step 1 it's just reading your library, so if it fails here, rebuilding your library will probably fix it. At step 2 it's processing all of your music files, and talking to Apple over the network. This is bottlenecked by Apple's servers. If it fails here, it's probably failing at Apple. During stage 3 it's uploading files to the cloud servers. For me it appears to be sending files to Amazon (oh the irony), so when it fails or stalls here, it's probably load at Amazon.
I'm watching the iTunes TCP/IP connections, and right now, it keeps dropping the connection to Amazon, so I assume it's overloaded at their end. Restarting the match process works, but it re-does stages 1 & 2, which aren't exactly fast to start with. Re-doing stage 1 is actually fairly fast, but stage 2 is not. Quite why it doesn't cache the results of stage 2 I don't know, but I guess they didn't expect stage 3 to go down quite so easily.