Having in mind that every equivalent method between the MasterPage and the ContentPage is being executed always later by the MasterPage (see here), we have to introduce the CSS change inside the MasterPage.
That being said, you can detect the name of the ContentPage actually being displayed inside the Masterpage using Page.AppRelativeVirtualPath.ToString() in your ContentPlaceHolder.
Then, you can modify the css inside the masterpage saving it in an asp:Literal that includes the HTML link tag.
For example:
MasterPage.aspx
<head>
<asp:Literal runat="server" ID="cssStyleSheet">
</head>
<body>
<asp:ContentPlaceHolder ID="contentPageHolder" runat="server">
</body>
MasterPage.aspx.cs
public void ModifyCSS(){
string contentPageName = contentPageHolder.Page.AppRelativeVirtualPath.ToString();
int pos = contentPageName.LastIndexOf("/") + 1;
contentPageName = contentPageName.SubString(pos, contentPageName.Length -pos);
switch(contentPageName)
{
case "Login.aspx":
cssStyleSheet.Text = @"<link rel='stylesheet' type='text/css' href='Styles/Login.css' />";
break;
case "Logout.aspx":
cssStyleSheet.Text = @"<link rel='stylesheet' type='text/css' href='Styles/Logout.css' />";
break;
}}