What is the difference between a Dynamic (or stateful) packet filter and a Circuit level gateway? Both monitor TCP handshaking between packets to determine whether a requested session is legitimate or not.
What you describe is true only for the packet filter. Circuit level gateway are more like a "Level-5 proxy" than a simple packet filter firewall.
In fact, when a client attempts to connect to a remote host through a circuit level gateway, the client does not execute its TCP handshake with the remote host. Instead, the circuit-level gateway intercepts the handshake and answers in place of the remote host.
Once the TCP handshake between the client and the circuit-level gateway has been fulfilled and that the circuit-level gateway considers that this connection can be allowed, the circuit-level gateway initiates a second TCP handshake this time between itself and the remote host. The remote host will therefore see the circuit-level gateway as IP source instead of the actual client.
Once this second handshake has been fulfilled, the the circuit-level gateway is in measure to transparently relay the data between the client and the remote server.
With a packet-filter firewall, there is only one TCP handshake occurring directly between the client and the remote host.