As you want to `apply the coupon on review step` then you need to ap`ply coupon and update review content using ajax`.

**Step1:** First `override` the controller `Onepagecontroller.php` using below link 

 1. https://magento.stackexchange.com/questions/30566/making-edits-to-core-controllers-onepagecontroller-php
 2. [How to override a controller in Magento][1]

    <?php 
    require_once Mage::getModuleDir('controllers', "Mage_Checkout").DS."Onepagecontroller.php";
    class Amit_CustomCheckout_OnepageControllerextends Mage_Checkout_OnepageController
    {
    }


**Step2:**  Then on the override controller `Amit_CustomCheckout_OnepageController` add a function `applycouponAction`,in where you have send the ajax `request to apply coupon` and return `update content of review step`.


    <?php 
    require_once Mage::getModuleDir('controllers', "Mage_Checkout").DS."IndexController.php";
    class Amit_CustomCheckout_OnepageController extends Mage_Checkout_OnepageController
    {
        public function applycouponAction(){        /**
             * No reason continue with empty shopping cart
             */
            if (!$this->getOnepage()->getQuote()->getItemsCount()) {
    					$result['error']=true;
    					$result['message']=$this->__('No item in cart.');
             $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
    					
                return;
            }
    
            $couponCode = (string) $this->getRequest()->getParam('coupon_code');
            if ($this->getRequest()->getParam('remove') == 1) {
                $couponCode = '';
            }
            $oldCouponCode = $this->getOnepage()->getQuote()->getCouponCode();
    
            if (!strlen($couponCode) && !strlen($oldCouponCode)) {
    					$result['error']=true;
    					$result['message']=$this->__('Coupon code "%s" is not valid.', Mage::helper('core')->escapeHtml($couponCode));
             $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
                return;
            }
    
            try {
                $codeLength = strlen($couponCode);
                $isCodeLengthValid = $codeLength && $codeLength <= Mage_Checkout_Helper_Cart::COUPON_CODE_MAX_LENGTH;
    
                $this->getOnepage()->getQuote()->getShippingAddress()->setCollectShippingRates(true);
                $this->getOnepage()->getQuote()->setCouponCode($isCodeLengthValid ? $couponCode : '')
                    ->collectTotals()
                    ->save();
    
    			$result=array();
    
                if ($codeLength) {
                    if ($isCodeLengthValid && $couponCode == $this->getOnepage()->getQuote()->getCouponCode()) {
    					$result['error']=false;
    					$result['message']=$this->__('Coupon code "%s" was applied.', Mage::helper('core')->escapeHtml($couponCode));
    					$result['html']=$this->_getReviewHtml();
                    } else {
    					$result['error']=true;
    					$result['message']=$this->__('Coupon code "%s" is not valid.', Mage::helper('core')->escapeHtml($couponCode));
                    }
                } else {
    
    					$result['error']=false;
    					$result['message']=$this->__('Coupon code was canceled.');
    					$result['html']=$this->_getReviewHtml();
    
                }
    
            } catch (Mage_Core_Exception $e) {
                $this->_getSession()->addError($e->getMessage());
    					$result['error']=true;
    					$result['message']=$this->__('Cannot apply the coupon code.');
    			
            } catch (Exception $e) {
    					$result['error']=true;
    					$result['message']=$this->__('Cannot apply the coupon code.');
    	            	Mage::logException($e);
            }
            $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
    		
    }
    }




In this code,  i have `return json data with a flag field name errooe` .html return contend of handler `checkout_onepage_review` and check this h`andler file at checkout.xml` 

Then basic on this logic you need to update content
  [1]: http://www.amitbera.com/how-to-override-a-controller-in-magento/