How is Trump able to withdraw from the Iran deal without Congressional approval?
Under U.S. law, the JCPOA is a non-binding political commitment. According to the U.S. State Department, it specifically is not an executive agreement or a treaty. There are widespread incorrect reports that it is an executive agreement. In contrast to treaties, which require two-thirds of the Senate to consent to ratification, political commitments require no congressional approval, and are not legally binding as a matter of domestic law (although in some cases they may be binding on the U.S. as a matter of international law).
It was not approved by Congress in general (as laws must be) nor approved by the Senate (as treaties must be). Barack Obama signed it on his own authority as president. Donald Trump withdrew from it under his authority as president, since he replaced Barack Obama.
Congress did pass provisions requiring that the president review the deal and certify that it was working. Obama did this regularly. At the beginning of his administration Trump also did these certifications, apparently on the advice of Secretary of State Rex Tillerson. He stopped certifying this October 13th, 2017. Anyway, these provisions restricted the president's acceptance of the deal, not withdrawal.
Presumably Obama thought that he was going to be replaced by a president who would choose to stay in the deal. So he wasn't so worried about forcing that. In addition, it's not clear that he had sufficient congressional support to make a more permanent deal, either by treaty or by passing a law removing the sanctions.