Dynamic way to use string/array as index of object in javascript
Yes, it's fairly straightforward to do this without using eval. For example, a statement like obj['a']['b']['c']['d'] = 'value'; can be rewritten as a series of smaller steps:

var temp = obj;
temp = temp['a'];      // member access
temp = temp['b'];      // member access
temp = temp['c'];      // member access
temp['d'] = 'value';   // assignment


Now, it shouldn't be too hard to see how those member access statements can be rolled into a loop, if you have an array of indexes (which you do).



A few other notes:


It's good to see descriptive names, but change_object_using_path_string strikes me as a bit too long and unwieldy. What about something like set_path_value?
You may want to use some more spacing between function parameters (param1,param2 vs param1, param2) and operators (a+b vs a + b). This makes individual parts stand out more, making the code a little easier to read.