Folks are right. Most MCUs do have a built-in watchdog and it's better to use that if possible, and also fix your (probably HW) problem first. Also, if you Google "watchdog ICs" and you will see many made by different manufacturers.
But if you really want to roll your own cuz it's just fun and hacker-like, there are many, many ways to implement this. Basically the idea 1) make a timer that gets constantly reset by the pulses, 2) does not care if the pulse stops low or high.
Here's a totally discrete solution.
On a rising edge, C1 charges up and current flows into Q1 base, turning Q1 on. This discharges C2, keeping Q3/Q2 turned off.
On a falling edge, the charge left in C1 is discharged through D1 so it's quickly ready to cycle again.
If pulsing stops, then Q1 is never turned on and C2 slowly charges up through R2. When its voltage reaches about 1.2 Volts, the Darlington Pair Q3/Q2 turns on and pulls the output low.
Here's a simulation of the circuit with the watchdog signal getting stuck high:
Most MCUs reset lines are active low so this is geared for that.
You might want to tie R2 to a GPIO line instead of 5V so that you can enable this watchdog circuit only after you are ready (e.g. OS is booted and your code is running).
This might seem like an expensive complicated solution but this is actually cheap because small transistors are pennies, and small caps and resistors are less than a penny. But it does cost you board space and parts count though.
You can adapt this circuit also. For example, you can use the C1/D1 type of architecture to constantly reset a 555 timer.
By the way, you should also check 1) how you're routing the crystal on your MCU. Make sure the capacitors of the crystal are grounded right to the MCU and no other fast rising signals run near your crystal, and 2) make sure your reset line has a good enough pullup, and 3) make sure your power is clean. Put a scope on your supply and see if there are any glitches causing the rail to dip and MCU to brown out.