Could the user who generates the invoice not just delete their secret so the payment would not be successful? Maybe there is a more eloquent way that wouldn't result in users funds being stuck for a period of time though but is cancelling a lightning invoice possible?
Yes. The payments on the Lightning Network are necessarily interactive, therefore the payee can just refuse the incoming payment.
Invoices are configured with an expiration date, such as the sender's wallet can warn the user if it has expired: no need to try to pay since the payee will just refuse the payment for sure.