It doesn't seem impossible, as long as we're not talking 100% perfect anonymity nor 100% verifiability.
Perhaps make users upload receipt dated within last x days, scratching out some details, and writing their username on it. It would take an admin all of 5 seconds to review and click approve, which would delete the receipt and allow the review through. Perhaps after x amount of verified reviews, just whitelisting the user. So at this point, your IP, username, and date of purchase are known to the review system, so not 100% anonymous.
Reviews without a receipt, or in waiting, are allowed but flagged as unverified or unsubstantiated. Probably allow them to be viewed, but not by default.
And of course, your typical spam preventions, review bombing deletion, etc.