You were pretty close, String.StartsWith handles that nicely:
// nb: if you are case SENSITIVE remove the second argument to ll.StartsWith
File.WriteAllLines(
    path,
    File.ReadAllLines(path)
        .Where(ll => ll.StartsWith(user, StringComparison.OrdinalIgnoreCase)));
For really large files that may not be well performing, instead:
// Write our new data to a temp file and read the old file On The Fly
var temp = Path.GetTempFileName();
try
{
    File.WriteAllLines(
        temp,
        File.ReadLines(path)
            .Where(
               ll => ll.StartsWith(user, StringComparison.OrdinalIgnoreCase)));
    File.Copy(temp, path, true);
}
finally
{
    File.Delete(temp);
}
Another issue noted was that both IndexOf and StartsWith will treat ABC and ABCDEF as matches if the user is ABC:
var matcher = new Regex(
    @"^" + Regex.Escape(user) + @"\b", // <-- matches the first "word"
    RegexOptions.CaseInsensitive);
File.WriteAllLines(
    path,
    File.ReadAllLines(path)
        .Where(ll => matcher.IsMatch(ll)));