Я не совсем уверен, что вы пытаетесь достичь, но вот стартер:
элементы блока (например, div) всегда расширяются до ширины вашего контейнера, если вы не используете режим причуд в IE.
нет смысла использовать абсолютное положение и плавающее право на одном и том же элементе. используйте маржу, чтобы получить подходящие расстояния. Плавающему элементу нужны размеры, например ширина.
Если вы хотите, чтобы плавающий элемент был «наверху», его нужно сначала указать в его родительском элементе. Смысл, поместите div перед img.
div#header {
background-color: #252525;
padding: 10px 0px 10px 15px;
}
div#login {
width: 100px; /* use preferred size here. */
float: right;
margin-right: 10px;
margin-top: 5px;
}