How is the bitcoin 21 million cap implemented? Just to check what would take for that limit to be changed. (not that I want to be changed, quite the opposite). I know the total number of bitcoin reward is halved every 4 years.

So does the verifying nodes check if the number of rewarded bitcoins match the distribution schedule?
Every node in the Bitcoin network checks every block it receives and validates any transactions in it. As coin generation is a transaction that is included in the block, it is also checked. Same as a node would not accept a transaction that does not balance its inputs and outputs (for example, by spending more coins than it has), neither would it accept a block reward different, than the one that is scheduled to occur (50 coins currently, half of that for some number of blocks, and then other fractions of that amount). The nodes know what rewards to expect based on the block number, as it is set to half based on that number.

To change it you would have to (convince people to) change all the clients, exactly like any other protocol change.