- **first thing**, `osgeo.gdal` is for pure Python scripting:

        from osgeo import gdal  
        raster  = gdal.Open('your.tif')   
        raster.GetProjection()

Everything else is a problem of osgeo, and not of PyQGIS, since you use 2 QGIS existing layers:

     ##raster_1=raster  
     ##raster_2=raster

you don't need it. To process the layers, the correct code is:

    raster_1 = processing.getobject(raster_1)   
    raster_2 = processing.getobject(raster_2)

an the crs is given by:

    new_proj = raster.crs()


- **second thing**, you cannot load a raster in QGIS without projection (if not yet existing, it is chosen by QGIS, according to some criteria):

![enter image description here][1]

So your first condition `if proj is None:`,  is unnecessary and your script become (you don't need a list with only two layers):

    raster_1 = processing.getobject(raster_1)
    raster_2 = processing.getobject(raster_2)
    if raster_1.crs()==raster_2.crs():
         action
    else:
         WrongCRS()

and the script terminate  by himself. 


----------


in the last version of the processing module, it is now:

    processing.getObjects()


----------


For terminate the script, you can embed your script in a function and use `sys.exitfunc()`
(I use the Python console to to see the results)

**example**:

    import atexit
    .....
    def all_done():
        message = '- Rasters must have the same CRS!\n\nExecution cancelled!'
        print message   
    atexit.register(all_done)
    raster_1 = processing.getObject(raster_1)
    raster_2 = processing.getObject(raster_2)
    def main():
        if raster_1.crs() != raster_2.crs():
             sys.exitfunc()
        else:
              message = "ok"
              print message
              continue
    main()

Result in the Python console:

![enter image description here][2]


  [1]: https://i.sstatic.net/ioUad.jpg
  [2]: https://i.sstatic.net/tWuJK.jpg