First, make sure your domain is not "locked". Registrar transfer policies vary from registrars to registrars. I have personally done A LOT of last minute transfers (literally on the last day) successfully; but then again, it depends on either or both the gaining and/or losing registrars. For amateurs, I would suggest leaving at least 10 days to expiry, just to play it safe.
Get [color=#CC0000]$50 Off[/color] with promo code DAYDREAM at DreamHost.com