--replicate-wild-ignore-table doesn't work?
This may be somewhat surprising, but this error is proof that your replication filter is working.  The statement that has stopped working is an UPDATE to another table, but the update is using data from the table that you have said not to replicate in the SELECT clause.  Notice that the error is that the table norep_cp_banner_tvc_temp_ doesn't exist.  Replication filters only are honored on the tables being affected - it's not just a straight pattern match.  

Replication filters are somewhat complicated - I suggest that you read up on How Servers Evaluate Replication Filter Rules and Evaluation of Table-Level Replication Options.

The first question to ask yourself is why am I filtering replication at all?  There is rarely a good reason for this and it usually causes far more problems that it solves.

You can  definitely work around the problem by using Row Based Replication (RBR) instead of Statement Based Replication (SBR).  RBR replicates the changes to the data instead of the statement.

I also suggest that you refactor your UPDATE as a join.  IN (SELECT...) is very optimized poorly in MySQL pre-5.6 and this will be much more performant:

UPDATE `ox_banners` A
JOIN norep_cp_banner_tvc_temp_ temp USING (bannerid)
SET A.`status` = 1;


Another way that you might be able to work around this problem is by updating a dummy field in the norep table.  Something like this:

UPDATE ox_banners A
JOIN norep_cp_banner_tvc_temp_ temp USING (bannerid)
SET A.`status` = 1, temp.dummy = 1;


That might trick MySQL into filtering this statement, but it's a hack to say the least.  RBR is likely your best bet.

UPDATE 2012-07-24

You mentioned that you are doing this to work around some of the problems with temporary tables being used with replication.  Filtering them out entirely is a terrible way to handle that problem.  Consider doing this instead, if you are worried about it.  

Create a separate database to hold your "temporary" tables

mysql&gt; create database temptables;
Query OK, 1 row affected (0.08 sec)

mysql&gt; use temptables;
Database changed


Namespace the tables by using your CONNECTION_ID...

mysql&gt; SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|              52 |
+-----------------+
1 row in set (0.00 sec)

mysql&gt; CREATE TABLE 52_my_temp ( foo int ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.20 sec)


Use the table as normal, then
DROP the table

mysql&gt; DROP TABLE IF EXISTS 52_my_temp;
Query OK, 0 rows affected (0.05 sec)


Finally, create a process that cleans the tables up every so often, just incase the DROP TABLE didn't get executed.  Something like this (Ruby Sequel syntax here):

# get a list of all the tables in the temp database
query = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.PROCESSLIST WHERE TABLE_SCHEMA=?"
db[query, 'temptables'].each do |row|
  # get the connection id
  id = row[:TABLE_NAME].split('_')[0].to_i
  # is the connection still active?
  query = "SELECT COUNT(*) AS cnt FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = ?"
  if db[query, id].first[:cnt] &lt; 1
    db["DROP TABLE #{row[:TABLE_NAME]}"]
  end
end