I came across this article that describes a scheme to stop money counterfeiting and then it hit me that this can be done rather simpler. Here it goes.
The central bank should keep like four times the amount of money in their vaults and they should keep track of the serial number of these notes out there and in the vaults. Serial numbers should be chosen random from a large range in such a way that the chance a random number would denote an actual number would give you a one in million chance of getting it right. The bank should also allow to circle the notes as fast as possible from the vaults into society and vice versa. Furthermore, a simple and quick (but not to quick, say a 1 sec wait) digital service would allow people to check whether a certain number is a currently in circulation (i.e. exists and is not in the vaults).
Now if somebody would want to counterfeit money and spend it, he would first get a valid serial number. The only practical way to do this, would be to copy one from an existing note. If the counterfeiter would succeed in getting enough numbers to make it worth while, spending the false notes would still give him a chance of 80% of getting caught, because the serial number would probably no longer be in society.