I am working with a WCF service with mutual SSL security and I want to check my understanding of what certificate is used when.
Is this correct?
-
Client hands the server the client public certificate
-
Server hands the client the server public certificate
-
Client sends request encrypted using the server public certificate
-
Server decrypts request using the server private certificate
-
Server sends response encrypted using the client public certificate
-
Client decrypts response using the client private certificate
Or does it work in some other way?

RFC 2246, Section 7.4 details the handshake. Other versions of SSL/TLS work pretty similarly with regards to your question.
SSL/TLS involves two types of encryption. Asymmetric-key encryption and Symmetric-key encryption. The certificates are used for asymmetric-key encryption, and are used solely in the handshake process.
The encryption used by the certificates is very brief in time, used in the handshake. The server public/private key pair (asymmetric keys) is used to protect the session key (symmetric key). The client public/private key pair is used to prove to the server that the client is who it says it is. It knows this because the client is able to encrypt data (data known by both sides) using the client private key (that only it knows) and the server may decrypt it using the client public key.
For the ordering, I’ve bolded the parts of your question in the summary list below. Here’s a nice summary from MSDN:
The TLS Handshake Protocol involves the following steps:
The WCF request/responses will all be after the client/server have switched to using the session key (symmetric key) for encryption. It won’t be using the certificate private/public keys at this point.