I'd start by checking the wear on the chain. Your chain has a 1/2" pitch, or pin-to-pin length, so that the pin centers always come out on the half or whole inch marks on a ruler. When the chain wears, the links seem to "stretch". A chain worn "1%" then will measure 10.1 inches over 10 links, instead of the nominal 10 inches. If the chain is worn to this 1% or more, it's time to change.
The rear cassette cogs tend to wear with the chain, ie, as the chain "stretches", the cog profile changes slightly to accommodate the "longer" chain. If the chain wear is higher than the 1%, say 2-3%, the cassette will likely need replacement too. The normal way this kind of wear is detected is that the chain skips cogs under heavy load, just as you're experiencing.
Don't know how many miles are on your bike, or whether the chain has been kept clean and lubed. With a well-lubed chain, I get around 5K miles on a chain before it hits the replacement limit. I've found that I need to replace the cassette with every second chain, ie, around 10K miles ( if not, I get skipping under load with the new chain). If you ride a lot, this is just routine maintenance, like changing tires.
Bottomline, if the chain hasn't been kept lubed on your bike, the chain and cassette gears could now need replacement. Suggest you measure the chain yourself, then take it to a mechanic to confirm and do the replacements as needed. You can learn to do this yourself if you want to take the time. Easy way to learn is to watch the mechanic. The LBS will be happy to sell you the tool needed to remove/replace the cassette, as well as the chain tool needed to shorten and reconnect the chain on your drivetrain.