Software Debouncing to detect if switch has been pressed for T seconds
I have managed to complete the aforementioned task using timers, however, since then, I have used all timer registers (and match resisters that are available) for more important tasks within the same project.


In that case, you're going about this all wrong. Unless you absolutely need the high resolution, low jitter, or other hardware features of the hardware timers, you should be doing your timing in software, using one of the hardware timers to generate continuous periodic interrupts that you can count in the ISR.

A "heartbeat interrupt" with a period of anywhere between 100 &micro;s and 100 ms (or more) is a common feature of embedded systems. This allows you to create an arbitrary number of software timers.

Even if you're already using all of the hardware timers, as long as at least one of them is doing something periodic, such as generating a PWM signal or creating a clock for a serial interface, you can enable interrupts on it and use them for your software timebase. The period might not be a "convenient" value, but that is a simple scaling problem that the software can deal with.