I just fixed my dad's XJ last weekend with the exact same problem as you're describing. It was a bad blower switch. I did replace the resistor as well upon his request. Total cost was $50 in parts and about 30 minutes start to finish.
2008 JK Rubicon Unlimited - 33" Duratracs, 16" Black Rock 942D Steelies, Custom TeraFlex 2" Coil Spring Lift, Modified Mopar Off-Road Bumper, TeraFlex D-Rings & Mounts, XRC-8 Winch, Hella 500 Windshield Lights on Rugged Ridge Mounts, XHD Snorkel.
Previous Jeeps: 3 TJs (03 Rubi, 00 Sahara, 97 Sport) 2 XJs (99 Sport, 96 Classic) and 1 CJ-7 (79 Rust-egade).