I understand the process of congestion avoidance where you trying to control the level of congestion in a network, and avoid loss of packets. But how can there be three acknowledgements, even if one is lost in transmission and finally reaches destination after timeout, surely the packet is droped if it times out, not just continued on its way and duplicated x amount of times during congestion.
Duplicate ACKs are part of the retransmit/selective-ack system. Without SACK support, you will get duplicate ACKs when a packet is lost and the receiver is informing the sender that it's seen up to the ACKed sequence-number. An ACK will be sent for each out-of-sequence packet received, which is why you'll see duplicate ACKs and sometimes many of them if the network diameter is big enough and the window size is large enough.
First we have to realize that ACKs are not saying that we have seen a specific sequence number - they are actually saying that we haven't seen this specific sequence number, but we have seen all the previous ones.
From RFC 793:
Segments also carry an acknowledgment number which is the sequence number of the next expected data octet of transmissions in the reverse direction.
An ACK is a duplicate ACK if, among other criteria (RFC 5681)
the acknowledgment number is equal to the greatest acknowledgment received on the given connection
Duplicate ACKs are signs that the receiver received something, just not the right sequence number. After three duplicate ACKs (usually 3) the sender retransmits the segment. This is called Fast Retransmit and is thus faster than the timeout based retransmission your mentioned in your question.