Jeffrey,
Your code looks like it is derived from code generated by Code Architect. I've tested it with the Break Detect and I haven't noticed any problems.
Are you setting EA = 1? I'm not sure it is a requirement, but I would try it. Also, check that you actually are calling uart_init, and that your code isn't crashing or getting stuck somewhere before reaching uart_init.
After programming a hex file, Flash Magic sets the Status Bit to zero to ensure that on the next reset your code is executed. While your code is executing, pulling the RxD line down for twenty bit periods or more is a break condition, and should place the device in ISP mode again.
When you send the break condition from Flash Magic, check using a scope that the RxD pin is being pulled low and does not have any glitches on it.
To execute you simply need to remove and reapply power to the board. If you changed the Status Bit manually back to 1 before doing this then your code won't execute and the device will enter ISP mode again, so you must leave the Status Bit at zero.