The problem is that the two left joins create duplicate values.
To solve this problem, you can only read individual values
SELECT u.id, u.name,
COUNT(DISTINCT i.id) item_count,
COUNT(DISTINCT b.id) board_count
FROM users u LEFT JOIN items i
ON u.id = i.user_id LEFT JOIN boards b
ON u.id = b.user_id
GROUP BY u.id, u.name
or count elements and boards per user separately, and then attach them to users
SELECT u.*,
COALESCE(i.item_count, 0) item_count,
COALESCE(b.board_count, 0) board_count
FROM users u LEFT JOIN
(
SELECT user_id, COUNT(*) item_count
FROM items
GROUP BY user_id
) i ON u.id = i.user_id LEFT JOIN
(
SELECT user_id, COUNT(*) board_count
FROM boards
GROUP BY user_id
) b ON u.id = b.user_id
SQLFiddle demo