Well Steve i've been on the same tricky situation as you will be soon and i can only say .... May The Force be with you my son !
From Habana i think the only dive sites are around Varadadero , aprox. 1 hour driving from the city ; but the diving there is not the best .
As for a place to stay , be warned that hotels in Cuba are not cheap anymore ( since they rated their services in euros ) and they are overpriced for the quality of service that you receive . I've been many times there and know several hotels but the only one i can recommend is El Telegrafo , very well located and in good shape ( for La Habana standards ) . I was there last july and the price was 90 euros/per room/night .
Another one that really catch my eye for their location and the one i will choose if i was in honeymoon , is Hotel Santa Isabel . Altough i had not stay there , i went inside and looks really nice but is about 50% more than El Telegrafo.
La Habana is great for photography and walk around since is really safe for tourists unless you go inside some few areas .
Don't miss daiquiris at Bar Floridita and mojitos at La Bodeguita del Medio ( both are the best i ever have ) also cuban food at La Bodeguita is really good. Another good place for cuban food is restaurant Los Nardos in front of the Capitolio .
As day trips , Vinales and Trinidad are the best options from La Habana .
From Cancun , best day trip for diving is Cozumel or some cavern diving on the cenotes near Tulum area . Also the mayan ruins of Tulum and specially Coba are worth a daytrip . In Cozumel i can recommend a small dive operator that have experience with u/w photographers ( www.sunrisediverscozumel.com) . Keep in mind that Cozumel is a popular cruise ship destination and some operators use big boats with huge amount of divers.
I will prefer to stay further south from Cancun , since is really crowded ( for my taste ) . Near Tulum you can find some really nice small beach hotels
You can pm if you want more detailed info .
Good luck and have a nice time there.
Jose Alejandro