You are not stating what the @Value1 is. Is it int, varchar, numeric etc.
Basically a starting point would be to have single quotes around the value.
'DELETE FROM '+ @TableName +' WHERE ' + QUOTENAME(@PM1) + ' = ''' + @Value1 + ''''
Also note QUOTENAME. This should be used to specify columns in SQL dynamic queries.
Your output would then be:
DELETE FROM testTable WHERE [Id] = 'B0-23232'
But going back to my original point. Dynamic sql will have problems if say your column is a datetime and you pass a string value that can not be converted to a datetime. You should consider casting or converting specific values to their value types like:
convert(datetime, '23/12/2011', 103) would be in your where clause:
'DELETE FROM '+ @TableName +' WHERE [UpdatedDate] = convert(datetime, ''' + @Value1 + ''', 103)'