Você deseja usar uma CASE
expressão de algum tipo.
No SQL Server, o código ficaria assim:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Editar: Conforme declarado nos comentários (e em algumas das outras respostas), o ELSE não é necessário se você colocar uma cláusula WHERE na declaração.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Isso evita atualizações desnecessárias. O importante em ambos os casos é lembrar que existem outras opções além de M&W (NULL por exemplo) e você não deseja inserir informações equivocadas. Por exemplo:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Isso substituiria quaisquer NULLs (ou outros gêneros possíveis) como 'M' que estivessem incorretos.
Algumas outras opções seriam
/*Simple form of CASE rather than Searched form*/
UPDATE TableName
SET gender = CASE gender
WHEN 'M' THEN 'W'
WHEN 'W' THEN 'M'
END
WHERE gender IN ( 'M', 'W' );
E um mais conciso
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );