There is a stock provided by GoD-Tony you could implement into a new plugin that works - at least until the map is changed (unless you use another method to actively change the name back to what you want it after map change).
the sm_rename command shipped in SM doesn't work for CS:S - the game just changes the name right back to what the user had - but with the stock mentioned above, you could psuedo'ly change the players name.
Here you go - here's the include GoD-Tony provided:
* Changes a clients name
* @param client A client index.
* @param name Set to false to skip the IsClientConnected check
* @param silent Set to true to not broadcast the name change
stock CS_SetClientName(client, const String:name, bool:silent=false)
GetClientName(client, oldname, sizeof(oldname));
SetClientInfo(client, "name", name);
SetEntPropString(client, Prop_Data, "m_szNetname", name);
new Handle:event = CreateEvent("player_changename");
if (event != INVALID_HANDLE)
SetEventInt(event, "userid", GetClientUserId(client));
SetEventString(event, "oldname", oldname);
SetEventString(event, "newname", name);
new Handle:msg = StartMessageAll("SayText2");
if (msg != INVALID_HANDLE)