Insert Records That Do Not Exist
You can not give object names from variables in TSQL, so you have to be a bit hacky and make the statement as a string and run as ad-hoc SQL. Something like:

SET @SQL = '
        INSERT dbNew.dbo. + @tablename
        SELECT * FROM dbOld.dbo.' + @tablename + '
        EXCEPT 
        SELECT * FROM dbNew.dbo.' + @tablename + '
        '
EXEC (@SQL)


You are likely to find the following more efficient:

SET @SQL = '
        INSERT dbNew.dbo. + @tablename
        SELECT * FROM dbOld.dbo.' + @tablename + ' oTbl
        EXCEPT 
        LEFT OUTER JOIN dbNew.dbo.' + @tablename + ' nTbl
        ON nTbl.primaryKey = oTlb.primaryKey
        '
EXEC (@SQL)


but that does mean you need to work out what the primary key columns are by querying more INFORMATION_SCHEMA/sys.* structures in your cursor.

Another complication that you will hit in a well designed database is that you will need to order the table population to ensure that foreign key constraints are always satisfied during the process (or remove such constraints first and readd them after the transfer).