I created an earlier post to resolve an issue for creating multiple s3 buckets without trying to duplicate code. It worked well!
Terraform - creating multiple buckets
I don't think you can inline variables inside the policy like that. Instead you need to create a template_file, and feed the result of the template through to the policy.
This will create a policy for each bucket (names taken from the previous question)
You then need to attach each of the policies to the aws_iam_user.user.name by using count again. Like so
data "template_file" "policy" {
count = "${length(var.s3_bucket_name)}"
template = <