It's a computer program.
EVERYTHING can be changed as long as the users agree to use the new software.
That includes size of blocks, frequency of blocks, subsidy per block, hash functions, signature functions, required data for valid transactions, required data for valid blocks, and more.
What is difficult to do is to get all the users to agree to change things. It is extremely difficult to get users to agree on changes that might improve bitcoin overall. It is practically impossible to get users to agree on changes that would make it worse.