Another way of thinking about the difference between at and in is that we tend to use at for a small place. In is used for large towns and sometimes well-known towns. So we would be unlikely to hear "He spent a week at London" (if London means the capital of England). If you heard "to change planes at London" this would refer to London Heathrow (i.e. the airport).
You can also use on for an island, if you want. But it would be mostly used for a small island.