Making the PoW require tons of memory to solve efficiently seems the best way to attain ASIC resistance. Monero's PoW requires only 8x more than scrypt's 128KB, but Ethereum requires over 1000x more than Monero's 2MB. None of these can be instantly verified though which is a desirable property of PoWs.
Modern asymmetric PoWs like Grin and aeternity's Cuckoo Cycle, and Zcash and Bitcoin Gold's Equihash combine large memory requirements (144MB-2.2GB) with instant verifiability.