There's plenty of decent hotels and there's some affordable hotels but they are never one-and-the-same. For instance, a Hamptons Inn or Holiday Inn in PR will be over $100 per night. Come to think of it, almost every place is over $100 per night.
For one of the rare places under $100, I'd recommend El Boriquen in Isla Verde. Chances are you'll have a room without a window though. (Isla Verde has also somewhat become the Daytona Beach of PR - Condado is a nicer area.)
For a decent place, well, there's a bunch. The Marriott in OSJ is nice but has small rooms. It doesn't really matter though because its location is superb. The Marriott at the SJ Convention Center is newer and top-notch, but there's nothing around it within walking distance. Both of these are expensive, though. Easily over $100 per night and then-some.
The East has a bunch of world-class resorts but they are very expensive.
For Ponce, the Holiday Inn is fine but only if you have a car, as it's to the west of the town. It has excellent views. The Melia is on the square in Ponce and is a nice old building with character. (It may have changed its name since I stayed there - not sure.)
Just don't stay at El Convento in Old San Juan. Although it's a wonderfully stunning historic building (one of the best examples of Spanish architecture in the world, actually), it usually charges close to $400 a night plus an occupancy tax (as all of the hotels do) plus an historic buildings tax, which is what really hits you hard. To wit, I stayed there for several nights at $400 per night only to learn about the historic building tax upon checkout, which bumped my total bill up to $500 per night. I was not happy.
Flamenco Beach on Culebra has a series of cottages you can rent that are quite reasonable considering they're right on one of the world's nicest beaches. You'd better make sure you have a reservation though.
Vieques has one world-class resort (I believe it's a Weston) that is expensive. A lot of celebrities stay there. However, most people rent houses when staying in Vieques. You can usually rent a house for less than the cost of one night at the resort. Also, there are some awesome B&B's on Vieques. Just use google to find plenty of websites.
Regardless of where in PR you end up, I think the best places to stay are to hire someone's apartment. Just google "holiday apartment rental" or some such and you'll find plenty of options. There are some really nice homes in OSJ for rent (and elsewhere).
Good luck.