according to what i know, after the server has sent the FIN, it starts a TIMER and releases the connection after TIMER expires. similarly, client also starts a TIMER after sending the ACK and it too releases the connection after the timer expires.
theoritically, there is no full-proof way to release the connection in sure-shot way that both sides received the required segments of fin and ack. if anyone tries to make a protocol, say 4-way handshake or 5- way, so on, none will suffice the problem. the way you are trying to release the connection can go on forever.
practically, 3-way handshake is there to release the connection will 2 timers, one at client side and one at receiver side after sending their last segments(which is FIN for server and ACK for client)
.