<p>When I'm creating a user for my web application, an SMTP email (using ASP.NET's SmtpClient) is sent to the user with the
automatically generated password. However, sometimes what I notice is that it times out and the new user simply won't receive the email with the password.</p>

<p>Alright, so I'll display a message indicating that the mail did not go through but the user is created.</p>

<p>Therefore, the sys admin has 2 options so far:</p>

<ol>
<li>Reset the password for the user and hope another SMTP mail is sent with the auto-generated password.</li>
<li>Delete and recreate the user.</li>
</ol>

<p>I could rollback the user creation if the smtp is not sent but what is the best practice to tackle this problem?</p>

<p>I'm thinking that I should retry sending the email 3 times with a timeout period of 5 seconds each. So 15 seconds would be the worse case scenario.</p>

<p>Is this the way to go?</p>

Well, depending on your platform, if you can just hand off your mail to a local MTA, it should handle the retries and such.  Your program can just queue the mail and move on, not worry about dealing with timeouts and graylists etc.
If the message still can't be delivered, you could always try resending it (via a password reset feature).  If that fails as well, most likely there was a mistake in the email address, and I would suggest deleting the account, causing the user to re-register.
This, of course, might not be possible on some systems, depending what can be done with an unconfirmed user - that really depends on what you allow people to do before their email is validated.