Потому что вместо ожидания ответа нужно читать документацию!
По нормальному твой запрос должен выглядеть следующим образом:
INSERT INTO users (balance, steamid, name, avatar)
VALUES (0, $1, $2, $3)
ON CONFLICT (steamid) DO
UPDATE SET name = excluded.name,
avatar = excluded.avatav;
Условие для update тебе в данном случае не требуется, так как по нему и произошел конфликт. А служебное слово excluded применяет набор данных по которым и произошел конфликт.
Более подробно как это работает можете прочитать в
документации