As noted, a LEFT JOIN is what you need. An INNER JOIN requires a matching row in both tables; a LEFT JOIN will keep the row from the left-hand table in the join even if no matching row is found in the right-hand table.
If there is no matching row, SQL will set all columns in the right-hand table to NULL. You can take advantage of this to check for missing rows. You shouldn't need to use COALESCE, as SQL will ignore NULL values when doing a SUM.
I coded your date requirement exactly as you stated it (after Jan 1, i.e., Jan 2), although it seems very odd. It's more likely it should be >= '01/01/2017' rather than >.
SELECT users.users_id, users.first_name, users.last_name, users.gender, deposit.time_stamp, SUM(deposit.amount) AS TotalAmount
LEFT OUTER JOIN deposit ON users.user_id = deposit.user_id
WHERE users.gender = 'M' AND deposit.time_stamp >= '01/02/2017'
GROUP BY users.users_id, users.first_name, users.last_name, users.gender, deposit.time_stamp
HAVING SUM(deposit.amount) > 10 OR SUM(deposit.amount) IS NULL /* --<<-- */
SQL DBA,SQL Server MVP(07, 08, 09) Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial: "If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them."