We're going to stay at the Westin in Coral Gables, but that's not close to the port. There is the Holiday Inn which has received good reports. Cruise Fanatic stayed at the Red Roof Inn near the airport once. There are some wonderful hotels at South Beach, but they're not reasonable.
Holiday Inn-Port of Miami is a pretty good place to stay and we love the location! It is directly across the street from Bayside Marketplace, which is fun to go to. Lots of restuarants, bars, shops, etc. You can even take boat tours from there too.
We just stayed at the LaQuinta Inn on LeJeune Road. Free shuttle from the airport to the hotel and to the Port of Miami. There are two restaurants near by-Brennigans and a steak house in the Embassy Suites next door. Almost everyone at the hotel was leaving on their cruise the next day. I think it was $85 for the night, free shuttle from the airport to the hotel, from the airport to the Port of Miami and a delicious breakfast. We would definitely stay there again.
I saw someone else mentioned the Holiday Inn by Bayside. We went to Bayside in the evening and saw the Holiday Inn across the street. The street is 6 lanes, but has a cross walk so it is easy to get to it from your hotel. The hotel is close to the Port Of Miami, I'm not sure if they have a shuttle service or not. I know there were a couple hotels that offered cruise packages that included shuttle service from the hotel to the port.
If you haven't already left see my post under "Miami Hotel and Shuttle" - we stayed at the Marriot Springhill near the airport - cheap (I think!) at $147 for two for their cruise special package, which includes bed, breakfast, and shuttle from airport and to the Port - but beware the unreliable shuttles. Probably wouldn't go back. Anyone else stayed here?