You can create view dynamically.
I dont know about "Client wants to show only list items in list view web part based on value from user profile".
But you can check for suppose view named "ClientView" into list if found delete it and create new view with same name for current user.
e.g.
SPList taskList = web.Lists[tasklistName];
string query = string.Empty;
if (taskList != null && taskList.ItemCount > 0)
{
query = "<OrderBy><FieldRef Name=\"Requirement_x0020_Details\" Ascending='TRUE'/></OrderBy><Where><Eq><FieldRef Name=\"Item_x0020_Type\"/><Value Type='Text'>Current</Value></Eq></Where>";
}
else
{
query = "<OrderBy><FieldRef Name=\"Requirement_x0020_Details\" Ascending='TRUE'/></OrderBy><Where><Eq><FieldRef Name=\"Task_x0020_Type\"/><Value Type='Text'>Current</Value></Eq></Where>";
}
StringCollection relevantColumns = CreateViewColumns();
SPView taskView = taskList.Views.Add("ClientView", relevantColumns, query, rowCount, true, false);
private StringCollection CreateViewColumns()
{
StringCollection viewFieldsCollection = new StringCollection();
string tasksColumns = "Requirement_x0020_Details;DocIcon;LinkTitle;AssignedTo;Status;Priority;DueDate;PercentComplete";
string[] columns = tasksColumns.Split(';');
foreach (string column in columns)
{
viewFieldsCollection.Add(column);
}
return viewFieldsCollection;
}