Although a drop-down would give users the choice to choose the "wrong" country. I'm not sure what the issue is with that. If your IP checker returns one of the 200 countries that you don't have a currency set for, how would you determine the currency for them? If someone is traveling or using a proxy server or behind a firewall that blocks the IP the drop-down lets them choose the currency they want to shop in.
That is all irrelevant though if your client wants automatic detection.
Once you have determined the country of origin you would save it in the session and then you can use IF statements to show the correct values where you need to including in the cart code.